IE8 中 data:uri 的 32KB 限制有任何解决方法吗?
Any workaround for the 32KB limit on data:uri in IE8?
我想通过单击 JavaScript
在 HTML
img
元素中加载图片。 JavaScript
调用一个 ActiveX
函数并获得一个 BASE64 编码的字符串表示图像,然后将其放入 img
src
中,如下所示:
var message = activex.GetImage(param);
var img = document.getElementById("imgPhoto").src = "data:image/jpeg;base64, ".concat(message);
问题是我在最近的 IE
中测试了它,向后兼容 IE8
并且它有效,但实际的 IE8
对 data:uri
有 32KB 的限制,这意味着我的图片被截断了,只显示了 ~32KB。
解决方案:
- 我正在考虑将
BMP
转换为 JPEG
,但我仍然不能保证它们不会超过限制。
- 我也见过 this 方法,其中图像是通过
CSS
在 MHTML
中加载的,但我看不出如何重写 CSS
每次都归档。据我了解,JavaScript
无法真正将文件写入您的磁盘。
考虑到我的限制,有人设法克服了这个限制吗?
我建议完全避免使用 BMP - 改用 JPEG。您将获得更小的文件大小和更好的性能。更不用说,您经常会低于 32kb 的限制。在 32kb 仍然 不够用的情况下,通常情况下,您可以通过从图像文件本身。如果压缩和删除元数据后32kb仍然不够,我建议您再考虑一下数据URI是否合适。
我想通过单击 JavaScript
在 HTML
img
元素中加载图片。 JavaScript
调用一个 ActiveX
函数并获得一个 BASE64 编码的字符串表示图像,然后将其放入 img
src
中,如下所示:
var message = activex.GetImage(param);
var img = document.getElementById("imgPhoto").src = "data:image/jpeg;base64, ".concat(message);
问题是我在最近的 IE
中测试了它,向后兼容 IE8
并且它有效,但实际的 IE8
对 data:uri
有 32KB 的限制,这意味着我的图片被截断了,只显示了 ~32KB。
解决方案:
- 我正在考虑将
BMP
转换为JPEG
,但我仍然不能保证它们不会超过限制。 - 我也见过 this 方法,其中图像是通过
CSS
在MHTML
中加载的,但我看不出如何重写CSS
每次都归档。据我了解,JavaScript
无法真正将文件写入您的磁盘。
考虑到我的限制,有人设法克服了这个限制吗?
我建议完全避免使用 BMP - 改用 JPEG。您将获得更小的文件大小和更好的性能。更不用说,您经常会低于 32kb 的限制。在 32kb 仍然 不够用的情况下,通常情况下,您可以通过从图像文件本身。如果压缩和删除元数据后32kb仍然不够,我建议您再考虑一下数据URI是否合适。