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

标签 javascript html base64 modernizr data-uri

我正在使用 Modernizr 来检测我们的用户正在运行的浏览器中支持的功能,到目前为止一切顺利。但是我在测试 base64 兼容性时遇到了一个理论上的问题。这个支持的补丁详解here , 并且有效-除了 IE8 的奇怪情况- it only allows base64 encoded images of up to 32KB .

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

除了如何处理现有图像外,我对 base64 编码几乎一无所知。有人有什么想法吗?

最佳答案

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

    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 和其他浏览器中有效。不过,我很乐意听到任何替代方案。

关于javascript - 更好地测试 base64 URI 支持(我可以在 JS 中创建一个大的 base64 编码图像吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6680539/

相关文章:

html - 如何将文本对齐到同一行的不同边

javascript - 控制输入​​数字字段最小/最大

php - 将 MySQL 数据分类为限制大小的页面,并在屏幕上选择更改页面?它是如何完成的?

javascript - Twitter 嵌入式时间线回调

javascript - 上传HTML格式的图片并获取图片路径

go - 解码base64并将其编码为十六进制

计算 Base 64 编码消息的大小

html - 在 ActionScript 中从 data-in-uri(base64 编码的 PNG)创建图像

javascript - 单击按钮后停止页面回发

javascript - 单击提交按钮时显示另一个 DIV