我维护了一个遗留的Web应用程序,它有很多旧的怪癖模式页面,以及许多较新的标准模式页面。
在IE10中,如果我们的域名在IE兼容性列表中,我会收到来自IE的混合消息。
如果我将开发工具中的浏览器模式从IE10 Compat View更改为IE10,然后再返回到Compat View,我得到:
IE10开发工具有时会歪曲浏览器模式吗?例如,当页面因为doctype和X-UA-Compatible设置为IE = edge而实际进入标准模式时,根据兼容性列表或其他标准猜测模式?
或者,documentMode和userAgent不可靠,无法测试我们所处的模式吗?
基本上,如果我们检测到他们处于该模式,我们想告诉用户“嘿,您不再需要将我们的网站放在您的兼容性视图列表中”。
答案 0 :(得分:2)
userAgent
中的值是正确的测试;无论开发工具说什么,Trident / 6.0都意味着不是compat模式。
答案 1 :(得分:2)
测试User-Agent字符串足以确定页面是否处于兼容性视图模式。如果UA字符串是MSIE 10.0, Trident/6.0
,您可以相信该页面处于IE 10标准模式。因此,在第一种情况下,我不相信开发人员工具报告的“浏览器模式:IE10 Compat视图”,这可以通过您对建议标准模式的页面外观的观察而产生。
对于您的情况,如果这是请求中的UA字符串,则表示未遵守兼容性视图设置列表。在发出请求之前会生成浏览器模式和UA字符串,因此它们不会受到响应中的X-UA-Compatible
标记或doctype
的影响。无论出于何种原因,似乎IE10不尊重您域的兼容性视图设置列表中的条目。以下是该过程from MSDN的说明:
据我所知,您可以依赖用户代理字符串来确定何时通知访问者他们可以从兼容性视图设置列表中删除您的网站(或取消选择兼容性视图按钮) )。具体来说,如果字符串为MSIE 7.0, Trident/6.0
,则浏览器模式为Internet Explorer 7,浏览器(如Trident/6.0
所示)为IE10。
来自MSDN的really good blog post(上图来自)有关IE9的详细信息,它通过浏览器模式与文档模式进行详细说明,并指定浏览器和UA字符串在这些不同情况下的行为。不幸的是,我没有找到关于IE10的类似详细帖子,但我猜/希望行为类似。
最后说明:当你说网络应用程序有很多旧的怪癖页面时,我担心文档模式(Quirks)和浏览器模式(兼容性视图)之间的混淆。我猜这不是你问题的一部分,但是因为这种区别在过去使我绊倒了,我只想在这里提一下。