似乎当网页有

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />

因此,IE 8将模拟IE 7,然后在网页中,当

<!--[if lt IE 8]> 
  <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" />
<![endif]-->

然后它也将加载 ie.css?

也就是说,是8,模拟IE 7,所以 lt IE 8 将会 true?

更新: 但是,服务器端变量 HTTP_USER_AGENT 还会说IE 8吗?因为浏览器以IE 8为IE,将IE 8作为HTTP_USER_AGENT的字符串,然后服务器回复了想要效仿IE 7的服务器。兼容模式(即7仿真模式)?

有帮助吗?

解决方案

那就是那个元标记的重点,不是吗?您有这个时刻:

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />

IE8开始以IE7的方式表现在客户端:

  • 您的页面都会像在IE7中一样呈现
  • 您的条件评论针对比IE8更老的任何内容(<!--[if lt IE 8]>)也将被读取,并执行内部的代码,因此 ie.css 加载

但是,仅在IE8读取该元标记之后,IE7开关才发生。由于您的HTML作为响应的一部分返回,因此IE8必须首先请求它。由于IE8事先不知道会出现此元标记,因此它发送的用户代理字符串是 MSIE 8.0. 。然后,PHP将其识别为IE8。

其他提示

如果您想要其他解决方案(并且愿意使用),则可以使用jQuery检测浏览器(jquery.browser)。在兼容模式下,IE7确实会导致IE7。

如果您告诉IE8效仿IE7,您可以相信您的IE7的CSS应该正确。只需使用LTE代替LT即可。

<!--[if IE 8]> 
   <meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />
<![endif]-->
<!--[if lte IE 8]> 
  <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" />
<![endif]-->
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top