【问题标题】:Determine if in IE8 Compatibility Mode using conditionals使用条件判断是否处于 IE8 兼容模式
【发布时间】:2011-03-09 13:56:39
【问题描述】:

根据我的研究,我了解到 IE8 会为本地 Intranet 主机和本地 IP 范围强制进入 IE7 模式等烦人的事情。我从previous question 了解到,无法使用条件语句,因为无论 IE8 是在 IE8 还是 IE7 模式下呈现,它仍然只会使用<!--[if IE 8]> 条件语句。

由于这个问题是不久前提出的(在 IE8 测试阶段,从外观上看)我想知道这是否已经改变或者是否有任何其他方式使用条件来确定 IE8处于兼容模式。

谢谢!

【问题讨论】:

标签: internet-explorer-8 conditional-comments ie8-compatibility-mode


【解决方案1】:

最后,我选择混合两种常用的策略来处理这个bug。

我创建了一个覆盖 CSS 文件,我使用条件 cmets 将其导入。但是,在 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 的表格。

【讨论】:

  • 只要点击条件注释,IE 就会确定它处于何种呈现模式。因此,嵌套的元标记将不起作用,也不会将 IE 设置为边缘模式。你可以在 HTML5BP 的 Github Repo 上看到一个关于这个问题的很长的评论:github.com/h5bp/html5-boilerplate/issues/378
  • @calvinf:奇怪,因为它已经在生产环境中工作了几个月。一定有其他事情正在解决这个问题。
  • 您的网页是否通过 HTTP 标头设置 X-UA-Compatible?此外,没有 X-UA-Compatible 的页面通常会以边缘模式呈现,除非您的页面位于 Microsoft 的 IE 兼容性视图列表之一(或 Intranet 站点)。
  • @calvinf:说真的?我不记得了。我也无法检查,因为去年我问这个问题时,我已经不在我工作的公司了。
【解决方案2】:
【解决方案3】:

不,你不能使用条件来做到这一点。

最好的方法是使用在 Pekka 发布的链接中描述的 document.documentMode 属性。 How can I detect if IE8 is running in compatibility view?

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 2011-01-22
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2021-12-11
    • 2014-11-13
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多