数据uri的MSHTML回退:s

时间:2011-09-20 06:47:41

标签: css internet-explorer-7 mshtml data-uri

我的网站使用数据uri:s来减少对我网站的HTTP请求数。问题是数据uri:s在IE7中不起作用,IE7是我们必须支持的浏览器(不,我们不需要IE6)。我跟着Stoyan's guide实际上已经开始工作了,但是在最近的一次Microsoft安全更新(KB2544893,如comment on the original article中所述)之后,回退似乎已经停止了。

上面引用的评论表明我应该尝试使用Content-Type message / rfc822发送MSHTML文件,但是我也无法使用它,并且我在几个小时的课程中尝试了多种不同的方式。 / p>

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

3 个答案:

答案 0 :(得分: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 fallback image a sprite

这样你只为IE7用户增加了1次HTTP调用:

.ie7 .myClass {
      background-image: url(fallback-sprite.png);
      background-position: 150px 15px;
}

答案 1 :(得分:3)

我接触了Stoyan Stefanov(该技术的原作者),并修复了他原来的例子,现在它可以工作了。只需添加“message / rfc822”作为内容类型即可。

修复示例:http://www.phpied.com/files/datasprites/testhover2.html

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

答案 2 :(得分:0)