IE8 中 data:uri 的 32KB 限制的任何解决方法

Any workaround for the 32KB limit on data:uri in IE8?

本文关键字:任何 解决 方法 32KB data uri IE8      更新时间:2023-09-26

我想在HTML img元素中加载图片,单击JavaScript按钮。JavaScript调用ActiveX函数并获取一个表示图像的 BASE64 编码字符串,然后将其放入img src中,如下所示:

var message = activex.GetImage(param);
var img = document.getElementById("imgPhoto").src = "data:image/jpeg;base64, ".concat(message);

问题是我在最近的一个向后兼容IE8 IE中对其进行了测试,并且它有效,但实际IE8data:uri有 32KB 的限制,这意味着我的图片被切断,只显示 ~32KB。

解决 方案:

  1. 我正在考虑将BMP s转换为JPEG s,但我仍然无法保证它们不会超过限制。
  2. 我也见过这种方法,其中图像通过CSS加载 MHTML ,但我看不出我每次如何重写CSS文件。据我了解,JavaScript无法真正在您的磁盘上写入文件。

考虑到我的限制,有人设法克服了这个限制吗?

我建议完全避免使用BMP - 改用JPEG。您将获得更小的文件大小和更好的性能。更不用说,您经常会低于 32kb 的限制。在 32kb 仍然不够的情况下,通常情况下,您可以通过从图像文件本身中删除不必要的元数据(常见于 Adobe Photoshop 等应用程序)来减少更多字节。如果在压缩和删除元数据后 32kb 仍然不够,我建议您再次考虑数据 URI 是否合适。

相关文章: