解决看似由Microsoft自己的软件引起的IE兼容性问题

时间:2014-02-03 12:21:07

标签: javascript asp.net internet-explorer

我们正在使用基于ASP.NET构建的第三方内容管理系统。这些页面似乎在IE11上以IE9模式显示。我使用MS IE10 compat检查器工具http://blogs.msdn.com/b/ie/archive/2012/01/20/ie10-compat-inspector.aspx来尝试找出在IE10或Edge模式下页面未显示的原因。 (我尝试使用的HTML5功能应该在IE10或11中显示。)该工具提供的唯一警告是关于使用window.navigator进行浏览器嗅探的Javascript。

使用window.navigator的代码位于名为webresource.axd的文件中:

var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1);

它本身似乎是ASP.NET的一部分。

没有javascript警告或错误。这是其中一个页面: https://secure.wycliffe.org.uk/NetCommunity/SSLPage.aspx?pid=283。这适用于Windows Server 2003上的IIS6。

这可能是IE9模式问题的原因吗? (我在文档的顶部有<!DOCTYPE html>。)

MS自己的工具是否真的在抱怨自己软件中的不良做法?

1 个答案:

答案 0 :(得分:1)

啊哈哈!这是因为您的服务器使用X-UA-Compatible标头向下发送页面,告诉Internet Explorer使用IE9模式。

要查看它,请在IE10中打开https://secure.wycliffe.org.uk/NetCommunity/SSLPage.aspx?pid=283,然后按F12以显示开发人员工具。切换到“网络”选项卡,按“开始”并刷新页面。加载后,双击第一个项目,然后切换到Response Headers选项卡。

您应该在其中看到标题:X-UA-CompatibleIE=9

要强制IE使用最新的渲染模式,请进入IIS配置,找到它的应用位置,然后将其删除,或将其更改为较新版本,例如: IE=10。或者,IE=edge将始终使用最新版本的标准模式渲染引擎。但请注意,这可能是有原因的!我们不得不在过去使用该标头作为传统.net应用程序中IE10问题的短期解决方法。

有关详细信息,请参阅MSDN: Defining document compatibility