【问题标题】:How can I make a link in IE using base64 encoding method?如何使用 base64 编码方法在 IE 中创建链接?
【发布时间】:2012-09-29 07:22:43
【问题描述】:

我正在动态生成一个 base64 gif,并尝试创建一个指向新页面的链接以打开 gif 的全尺寸版本。这适用于 chrome,但在 IE 中,仅显示 img 缩略图。当有人点击 IE 中的链接时,会打开一个空白页面。

有什么想法吗?

谢谢

马特

echo '<a href="data:image/gif;base64,'. $data. '" target=_blank>';
echo '<img src="data:image/gif;base64,'. $data . '" width="200"/></a>';

【问题讨论】:

  • 你用的是什么版本的IE?
  • 到目前为止,我只使用了 IE 9。谢谢。

标签: internet-explorer base64 data-uri


【解决方案1】:

根据this,您不能在 IE 中使用数据 uri 进行导航。

  • Internet Explorer 至第 7 版(截至 2011 年 9 月约占网络流量的 5%),缺乏支持。然而,这可以通过提供浏览器特定的内容来克服。[6]
  • Internet Explorer 8 将数据 URI 的最大长度限制为 32 KB。 (Internet Explorer 9 没有这个限制)[4][3]
  • 在 IE 8 和 9 中,数据 URI 只能用于图像,不能用于导航或 Javascript 生成的文件下载。 [7]

【讨论】:

  • 我看到了前 2 个要点,但没有看到第三个。这样就可以解释了。感谢您指出穆萨。
【解决方案2】:

如果您使用 Java,您将创建一个 servlet 解码器。像这样:https://gist.github.com/sjpuas/6217394 这适用于所有 IE 版本

用jquery替换像这样的url图片

if ($.browser.msie && $.browser.version == "6.0") {
                $("img[src*=base64]").each(function (i, img) {
                    var base64 = $(img).attr("src").split("base64,")[1];
                    var encoded = encodeURIComponent(base64);
                    $(img).attr("src", "/myApp/base64Servlet?base64=" + encoded);
                });
            }

【讨论】:

  • 这不是很容易达到 IE 上 2083 个字符的最大 url 长度吗?
猜你喜欢
  • 1970-01-01
  • 2020-01-22
  • 2015-09-21
  • 2015-03-13
  • 1970-01-01
  • 2016-08-28
  • 2021-01-15
  • 1970-01-01
  • 2021-11-27
相关资源
最近更新 更多