1)这是预期行为吗? 2)HTTP标头不应该强制浏览器在启用Quirks + IE7Standards的IE7模式下显示,然后不显示兼容性视图按钮吗?
如果网站没有准备好支持IE8,那么有没有一种方法来强制IE7仿真,从而禁用此按钮?
网站所有者始终可以控制其内容。默认情况下,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兼容性列表或本地客户端配置中:
工具
> 兼容性视图设置
在我们的工作服网站上,我遇到了一个问题,当IE8首次发布时,我们最初不得不使用Meta EmulateIE7来解决CSS问题。后来,我们纠正了该问题,并添加了元标记X-UA-Compatible IE=8
我们注意到的是,即使清除浏览器缓存,IE8仍会保留用户设置的兼容性按钮状态。这对我们来说非常重要,因为它在兼容模式下运行时会导致脚本问题。
我们通过在所有页面的头部中添加X-UA-Compatible IE=8,并将其添加到IIS作为HTTP头来解决了这个问题。兼容性按钮不再显示在访问者的浏览器上 =)
希望这可以帮助你!