繁体   English   中英

对 base64 URI 支持的更好测试(我可以在 JS 中创建一个大的 base64 编码图像吗?)

[英]A better test for base64 URI support (can I create a large base64-encoded image in JS?)

我正在使用 Modernizr 来检测我们的用户正在运行的浏览器中支持的功能,到目前为止一切都很好。 但是在测试 base64 兼容性时,我遇到了一个理论问题。 此处详细介绍了此支持的补丁,并且可以正常工作-除了 IE8 的一个奇怪情况-它只允许 base64 编码的图像最大为 32KB

我真的不想在我的 JS 文件中嵌入一个 32KB 长的 base64 字符串,它会增加大量的膨胀。 那么,我可以使用 JS 创建一个 32KB 的有效图像吗? 我正在考虑在字符串中重复某种模式,直到它达到 32KB 的长度,诸如此类。 或者可能取一个现有的小字符串(如 Modernizr 补丁中的那个)并在末尾添加垃圾数据,这仍然会产生有效的图像。

除了如何操作现有图像之外,我对 base64 编码几乎一无所知。 有没有人有任何想法?

我有一个答案。 我尝试了各种技术(我可以手动添加的 PNG 源代码中的重复文本块等),直到我发现添加换行符似乎可以完成这项工作:

    var b64test = new Image();
    b64test.onload = function() {
       alert("yay!")
    }

    b64test.onerror = function() {
       alert("boo")
    }

    /* A 1x1 GIF image */

    var base64str = "R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="
    while (base64str.length < 33000) {
        base64str = "\r\n" + base64str;
    }

    b64test.src= "data:image/gif;base64," + base64str;

在 IE8 中失败,在 IE9 和其他中工作。 不过,我很想听听任何替代方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM