似乎“ IE = Emulateie7”也会使“ <! - [如果LT IE 8]>”是真的吗?
-
29-09-2019 - |
题
似乎当网页有
<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]-->
不隶属于 StackOverflow