【问题标题】:Embed an image nested inline within an HTML page for IE7+在 IE7+ 的 HTML 页面中嵌入嵌入的图像
【发布时间】:2010-06-23 22:41:07
【问题描述】:

有没有办法在 IE7 的 HTML 页面 *inline* 中嵌套图像?

我不能使用外部资源,这完全是因为特定的服务器配置(它是一个处于维护模式的 Web 调度程序,将所有请求重定向到单个 .html 页面)。

所以我无法通过以下方式使用经典嵌入:

<html>
 <img src="mypic.jpg" />
</html>

在寻找解决方案时,我发现了这些:

  • 在 XHTML 文件中使用内联 SVG # => 在我的情况下,我不能使用 XHTML 扩展名,页面具有 .html 扩展名(我无法更改)
  • 使用 base64 编码 # => 它在 Firefox 和 Chrome 中运行良好,但在 IE7 中不适用

在我的配置中似乎都没有。

我寻求的越多,我的希望就越少。有什么想法吗?

【问题讨论】:

    标签: html image internet-explorer-7 inline


    【解决方案1】:

    据我所知,在当前版本的 Internet Explorer 的 HTML 文档中嵌入图像的唯一选项是 VML(Internet Explorer 以外的任何东西都不支持)。

    您可以使用 Raphaël 之类的东西将 VML 或 SVG 抽象为单个 JS 脚本(但这会增加对 JavaScript 的依赖)。

    最简单的选择可能是在外部 URI 上引用普通图像……在不同的服务器上。

    【讨论】:

    • 我还发现了 Raphaël。当然,这是一个可行的解决方案。但这对于维护开发人员来说是相当困难的,事实上,我更喜欢适用于 SVG 以外的图像类型的解决方案。
    【解决方案2】:

    对于 svg 解决方案,您的页面不需要以 .xhtml 结尾。事实上,它可以以您的网络服务器处理的任何扩展名结束。

    xhtml 中的页面由其 doctype 定义定义。将xhtml 1.0(严格或过渡)的doctype定义,甚至更好的xhtml1.1,并在页面中嵌入svg。

    作为替代解决方案,您可以尝试使用 .html 扩展名直接输出图像,保留其原始 mime(例如图像/jpeg),但我不确定它是否有效。

    【讨论】:

    • 作为 XHTML 的页面是由它的内容类型定义的,而不是它的 Doctype — Internet Explorer 8 和更低版本不支持 XHTML(除非它伪装成 HTML)或 SVG(除非 IE 有第三个派对插件添加支持)。
    • 输出带有 HTML 扩展名的 JPEG 也无济于事——关键是在单个请求中获取页面和图像,而不是对 URI 中带有 .html 的事物的两个不同请求。
    • 是的。在 IE9 中添加了支持(或者我听说,我希望它不是应用程序/xhtml+xml 的标记汤模式解析)。 (编辑:这是对已删除评论的回应)
    • 如果您使用 text/html 内容类型提供 XHTML,或者如果页面的 URI 触发 IE 的内容类型忽略功能,则 XHTML 将被解析为标签汤。这与支持具有不同解析规则和 DOM 结构的 XHTML 明显不同(例如,处理名称空间、在 JS 中以小写返回标签名称、tbody 是可选元素而不是具有可选开始/结束标签的必需元素等)。
    【解决方案3】:

    您可以重定向到单个图像并将文本放在图像上,而不是重定向到单个 .html 页面。这有明显的缺点,但图像有多重要?

    base 64 编码是什么意思?

    【讨论】:

    • @David Nice 文章,但“Internet Explorer 至第 7 版缺乏支持”
    • @David,谢谢,所以通过“base 64 编码”,OP 是在谈论 URI。
    • @Arnaud — 我在回答 Marcus 关于“base 64 编码”在这种情况下的含义的询问(这就是为什么它是对他的回答的评论,而不是它自己的答案)。你原来的问题指出IE7不支持它。
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 2012-03-04
    • 1970-01-01
    • 2011-02-17
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    相关资源
    最近更新 更多