4

我的站点使用数据 uri:s 来减少对我站点的 HTTP 请求数量。问题是数据 uri:s 在 IE7 中不起作用,这是我们必须支持的浏览器(不,我们不需要 IE6)。我已经按照Stoyan 的指南进行了操作,但实际上在进行了一次 Microsoft 安全更新(KB2544893,如对原始文章的评论中所述)之后,回退似乎已停止工作。

上面引用的评论建议我应该尝试使用 Content-Type 消息/rfc822 发送 MSHTML 文件,但我也无法让它工作,我在几个小时的过程中尝试了多种不同的方法。

所以我的问题是:你能让斯托扬描述的技术以某种方式工作吗?我真的很感激一个可行的例子来说服我这确实是可能的。

4

3 回答 3

3

我个人会使用条件样式。在您的主标记中 - 按如下方式启动它:

<!DOCTYPE html>
<!--[if IE 7]>    <html lang="en-us" class="ie7"> <![endif]-->
<!--[if IE 8]>    <html lang="en-us" class="ie8"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us"> <!--<![endif]-->

在您的 CSS 中,您现在可以执行以下操作:

.myClass {
      background-image: url(/*DATAURI GOES HERE*/);
}

.ie7 .myClass {
      background-image: url(fallback-image.png);
}

更新

除了下面的评论,如果您担心 IE7 性能 - 一种可靠的方法是将您的 IE7后备图像设置为 sprite

这样,您只需为 IE7 用户进行 1 次额外的 HTTP 调用:

.ie7 .myClass {
      background-image: url(fallback-sprite.png);
      background-position: 150px 15px;
}
于 2011-09-20T07:01:53.557 回答
3

我与 Stoyan Stefanov(该技术的原始作者)取得了联系,他修复了他的原始示例,现在它可以工作了。只需添加“message/rfc822”作为内容类型即可。

固定示例:http ://www.phpied.com/files/datasprites/testhover2.html

我让他在这里发表评论,以便我可以奖励积分,但他不想这样做。

于 2011-10-02T09:57:38.823 回答
0

http://www.phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under/这是我认为的解决方案

于 2011-09-27T04:35:56.520 回答