【问题标题】:IE8 Compatibility View Button is enabled even when IE=EmulateIE7即使 IE=EmulateIE7 也会启用 IE8 兼容性视图按钮
【发布时间】:2009-05-22 11:25:14
【问题描述】:

对于我们的 Web 应用程序,我们为所有页面发送 X-UA-Compatible -> IE=EmulateIE7。但是,刷新按钮旁边的兼容性视图按钮仍会显示。

1) 这是预期的行为吗? 2) HTTP 标头不应该强制浏览器以 IE7 模式显示(启用 Quirks + IE7Standards),然后现在显示 Compatibility View 按钮吗?

如果网站未准备好 IE8,有没有办法强制 IE7 仿真,从而禁用此按钮?

【问题讨论】:

  • 我可以通过粘贴 javascript:alert(document.documentMode); 来验证页面是否以 Quirks 模式显示。进入地址栏。即使处于 Quirks 模式,为什么还会显示兼容性视图按钮?

标签: internet-explorer-8


【解决方案1】:

根据Just The Facts: Recap of Compatibility View,您已经通过使用版本控制标签声明[您的网站]“准备好”用于 Internet Explorer 8。不应显示兼容性视图按钮:

网站所有者始终控制他们的内容。默认情况下,Internet Explorer 使用 DOCTYPE 切换来确定 Quirks v. Standards 模式(同样,Standards 模式映射到 IE8默认标准)。网站所有者可以选择使用 X-UA-Compatible 标签来绝对声明他们希望他们的网站如何显示并将标准模式页面映射到 IE7 标准。使用 X-UA-Compatible 标签会覆盖客户端上的兼容性视图。

有时不显示兼容性视图按钮。该按钮位于地址栏上的“停止”和“刷新”按钮旁边。在某些情况下,用户没有采取任何操作,因此“兼容性视图”按钮不会显示:

  • 如果您正在查看内部到 Internet Explorer 页面(例如 about:InPrivate)
  • 如果您正在查看的页面已通过使用版本控制标记/HTTP 标头声明它已“准备好”用于 Internet Explorer 8(此标记触发 Quirks、IE7 标准或 IE8 标准无关紧要,按钮不会显示)
  • 如果您正在查看 Intranet 页面并且选中了“在兼容性视图中显示 Intranet 站点”复选框
  • 如果您正在查看任何网页并且选中了“在兼容性视图中显示所有网站”复选框
  • 如果您正在查看 Microsoft 提供的兼容性视图更新列表中包含的网页,并且您选中了“包括 Microsoft 更新的网站列表”复选框
  • 如果您通过开发者工具栏切换了“文档模式”或“浏览器模式”设置

如果您使用的是 HTTP 标头,您是否使用 Fiddler 来验证 X-UA-Compatible 标头实际上是在每个页面上传递的?

如果你使用META标签,那么根据META Tags and Locking in Future Compatibility

兼容 X-UA 的标头不区分大小写;但是,除了 TITLE 元素和其他 META 元素之外,它必须出现在网页的标题(HEAD 部分)中的所有其他元素之前。

最后,当按钮出现时,IE8 是否真的in Compatibility View?如果是这样,您的网站可能在 Microsoft 的 IE8 兼容性列表中,或者在本地客户端配置中:

  • Tools > Compatibility View Settings
  • 确保您的网站未列在您已添加到兼容性视图中的网站
  • 尝试取消选中包括 Microsoft 更新的网站列表并重新启动浏览器

【讨论】:

  • 我已使用 Fiddler 确认所有页面都获取页眉,并且“开发人员工具”还确认站点上始终使用正确的“Quirks”或“IE7 标准”模式文档模式。但是兼容按钮仍然出现。 META 不是一个选项 - 站点很大,我们希望在站点 HTTP 响应标头级别控制此设置。
  • 谢谢!这是一个很棒的答案,问题作者真的需要接受它!
【解决方案2】:

我在我们的工作服网站上遇到了一个问题,当 IE8 首次发布时,我们最初不得不使用 Meta EmulateIE7 来解决 CSS 问题。我们后来纠正了这个问题并添加了元标记 X-UA-Compatible IE=8

我们注意到的是,即使在清除浏览器缓存的情况下,IE8 仍然保留了用户设置的兼容性按钮的状态。克服这一点对我们来说很重要,因为它在以兼容模式运行时会导致脚本问题。

我们通过在所有页面的头部设置 X-UA-Compatible IE=8 并将其作为 HTTP Header 添加到 IIS 解决了这个问题。兼容性按钮不再显示在访问者浏览器上 =)

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2012-08-29
    • 2012-07-31
    • 1970-01-01
    相关资源
    最近更新 更多