我从我的研究中了解到,IE8 会做一些烦人的事情,比如强制本地 Intranet 主机和本地 IP 范围进入 IE7 模式。我从上一个问题中了解到,没有办法使用条件语句,因为无论 IE8 是在 IE8 还是 IE7 模式下呈现,它仍然只会使用条件语句<!--[if IE 8]>
。
由于这个问题是不久前提出的(在 IE8 beta 阶段,从外观上看)我想知道这是否已经改变,或者是否有任何其他方式使用条件来确定 IE8 是否处于兼容模式。
谢谢!
我从我的研究中了解到,IE8 会做一些烦人的事情,比如强制本地 Intranet 主机和本地 IP 范围进入 IE7 模式。我从上一个问题中了解到,没有办法使用条件语句,因为无论 IE8 是在 IE8 还是 IE7 模式下呈现,它仍然只会使用条件语句<!--[if IE 8]>
。
由于这个问题是不久前提出的(在 IE8 beta 阶段,从外观上看)我想知道这是否已经改变,或者是否有任何其他方式使用条件来确定 IE8 是否处于兼容模式。
谢谢!
不,你不能使用条件来做到这一点。
最好的方法是使用在 Pekka 发布的链接中描述的 document.documentMode 属性。如何检测 IE8 是否在兼容性视图中运行?
最后,我选择混合使用两种常用的策略来处理这个 bug。
我创建了一个覆盖 CSS 文件,我使用条件注释将其导入。但是,在 IE 8 或 9 的情况下,此覆盖看起来不太好,因此我包含了“强制 IE 进入最新呈现模式”标题开关,如下所示。
<!--[if lte IE 7]>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="stylesheet" type="text/css" href="/Content/IE7Overrides.csss" />
<![endif]-->
这为 IE7 提供了一个不错的故障保护,但强制 IE8 和 IE9 在最新的浏览器中显示它,这将正确显示基于 CSS 的表格。