7

我希望能够输出一个包含图像的 HTML 文件(在文件本身内)。通过谷歌搜索,我遇到了几种方法来做到这一点:

  • javascript:imageData
  • 数据 URI,例如<IMG SRC="data:image/gif;base64,[...]">
  • <object ... >标记(虽然这使用数据 URI,因此可能继承相同的限制)

但我不知道浏览器更好地支持哪个,或者是否有其他选择。

有这方面实际经验的人可以给我建议吗?谢谢。

4

4 回答 4

8

关于浏览器支持,来自维基百科

以下 Web 浏览器当前支持数据 URI:

  • Gecko 及其衍生产品,例如 Mozilla Firefox
  • 歌剧
  • KDE,通过 KIO 输入/输出系统。这允许 KDE 浏览器 Konqueror 支持数据 URI。
  • 苹果浏览器; 虽然 Safari 的渲染引擎 WebKit 是 Konqueror 的 KHTML 引擎的衍生引擎,但 Mac OS X 不共享 KIO 从属架构,因此不共享实现。
  • 适用于 iPhone 的 Safari;
  • 谷歌浏览器
  • 互联网浏览器 8;出于安全原因,Microsoft 对某些“不可导航”内容(例如标签和 CSS 规则)的支持有限,包括担心嵌入在数据 URI 中的 JavaScript 可能无法被脚本过滤器(例如基于 Web 的电子邮件使用的过滤器)解释客户。数据 URI 必须小于 32k。
  • 世界浏览器;是一个 IE shell 浏览器,它内置了对 Data URI 方案的支持

IE 无法<object>正确处理标签,请参阅此处了解更多详细信息。简而言之,您不能相信 IE 会显示其中的图像。

javascript:imageData也没有得到很好的支持,因为它被用于许多跨站点脚本攻击。

There are many discussions of this on the web, and they all come to the conclusion that there is no good universal way to embed images. If you only need to support a subset of browsers, the data uri may work, or a combination of data uri and javascript.

于 2010-01-18T09:14:13.427 回答
1

imageData 更灵活,例如某些 ie 将数据 uris 限制为 32k。

于 2010-01-18T09:10:32.670 回答
1

除了 8 版之前的 Internet Explorer 之外,数据 URI 方案得到了很好的支持。

我认为 JavaScript URI 的支持稍微好一些,但如果 JS 不可用,则会失败。

您能做的最好的事情就是坚持使用外部图像资源。

于 2010-01-18T09:11:10.137 回答
0

数据 URI 在 < IE8 中不起作用。IE8 最多支持 32KB。

于 2010-01-18T09:11:47.253 回答