即使IE=EmulateIE7,IE8兼容性视图按钮仍然可用。

4
对于我们的Web应用程序,我们发送X-UA-Compatible -> IE = EmulateIE7到所有页面。然而,刷新按钮旁边的“兼容性视图”按钮仍然显示。
1)这是预期行为吗? 2)HTTP标头不应该强制浏览器在启用Quirks + IE7Standards的IE7模式下显示,然后不显示兼容性视图按钮吗?
如果网站没有准备好支持IE8,那么有没有一种方法来强制IE7仿真,从而禁用此按钮?

我能够通过将javascript:alert(document.documentMode)粘贴到地址栏中来验证页面是否以Quirks模式显示。即使它处于Quirks模式,为什么兼容性视图按钮仍然显示? - Nishith
2个回答

14
根据《兼容性视图概述》,通过使用版本标记,您已经“准备好”将您的网站适配给Internet Explorer 8。此时,兼容性视图按钮不应该显示出来:

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

有时候兼容性视图按钮不会显示。该按钮位于地址栏旁边的“停止”和“刷新”按钮旁边。以下几种情况下,用户无法采取任何操作,兼容性视图按钮也将不会显示:

  • 如果您正在查看一个仅供Internet Explorer内部使用的页面(例如about:InPrivate)
  • 如果您正在查看一个通过使用版本标记/ HTTP标头宣告其为“准备好”适配给Internet Explorer 8的页面(无论此标记是否触发Quirks、IE7标准或IE8标准,该按钮都不会显示)
  • 如果您正在查看一个内部网络页面,并且已经选中了“在兼容性视图中显示内部网站”的复选框
  • 如果您正在查看任何网页,并且已经选中了“在兼容性视图中显示所有网站”的复选框
  • 如果您正在查看一个包含在Microsoft提供的兼容性视图更新列表中的网页,并且已经选中了“从Microsoft包括更新的网站列表”复选框
  • 如果您通过开发人员工具栏切换了“文档模式”或“浏览器模式”设置

如果你正在使用HTTP header,请使用Fiddler来验证X-UA-Compatible header是否在每个页面中被正确传递。

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

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

最后,当按钮出现时,确认IE8是否处于兼容性视图中?如果是,则可能是由于该网站被列入了Microsoft的IE8兼容性列表或本地客户端配置中:

  • 工具 > 兼容性视图设置
  • 确保你的站点未列在添加到兼容性视图的网站
  • 尝试取消选中包括从Microsoft获取更新的网站列表并重启浏览器

1
我已经借助 Fiddler 确认所有页面都在获取头信息,而且 "开发人员工具" 也确认该网站始终使用正确的文档模式 - "Quirks" 或 "IE7 标准" 模式。但是兼容性按钮仍然出现了。META 不是选项 - 该网站相当庞大,我们希望在站点 HTTP 响应头级别控制此设置。 - Nishith
谢谢!这是一个很棒的答案,问题的作者真的需要接受它! - cowgod

0

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

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

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

希望这可以帮助你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接