在域控制的环境中,我发现即使在我们提供X-UA标签,!DOCTYPE定义和“ IE = Edge”响应的情况下,某些客户端(winXP / Win7,IE8 / IE9)也会触发兼容模式标头。这些客户端已选中“在兼容性视图中显示Intranet站点”复选框。这正是我要覆盖的内容。
以下是我用来尝试了解IE如何决定实际触发兼容模式的文档。
http://msdn.microsoft.com/zh-cn/library/ff406036%28v=VS.85%29.aspx
http://blogs.msdn.com/b/ie/archive/2009/02/16/just-the-facts-recap-of-compatibility-view.aspx
网站所有者始终可以控制其内容。网站所有者可以选择使用X-UA-Compatible标记来绝对声明他们希望其网站如何显示以及如何将Standards模式页面映射到IE7 Standard。使用X-UA-Compatible标签会覆盖客户端上的“兼容性视图”。
Google表示“定义文档兼容性”,但不幸的是,SPAM引擎不允许我发布两个以上的网址。
这是一个ASP .NET
Web应用程序,在母版页上包含以下定义:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
</head>
和 web.config
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=Edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
我已经使用Fiddler来检查标头确实被正确注入了。
我的理解是,使用这些设置,我应该能够覆盖“在兼容性视图中显示Intranet站点”浏览器设置。但是根据客户端的不同,我发现其中一些仍会触发兼容模式。这似乎还取决于计算机级别,而不是策略组设置,因为即使在不同客户端上使用同一组凭据时,我也会获得不同的结果。
禁用“兼容性视图设置”复选框可以解决问题。但是实际目的是确保无论客户端设置如何,应用程序的渲染方式都完全相同。
有什么想法,我可能会错过什么?是否有可能迫使IE始终呈现页面而不触发Compat模式?
太感谢了,
久美
PS:该站点目前正在开发中,当然不在Microsoft的兼容性列表中,但我也进行了检查,以防万一。
Google表示“了解兼容性视图列表”,但不幸的是,SPAM引擎不允许我发布两个以上的网址。