似乎无法摆脱兼容性视图?

Posted

技术标签:

【中文标题】似乎无法摆脱兼容性视图?【英文标题】:Cannot seem to get rid of Compatibility View? 【发布时间】:2011-12-16 20:16:43 【问题描述】:

我正在使用Flot 绘图库。它在 IE8 和 IE9 中似乎工作正常,但在 IE9 兼容性视图中出现问题 - 它不呈现任何图形。我怀疑这是因为它大量使用了 html5 canvas 对象,但我可能错了。我尝试执行以下操作:

将:<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 添加到我的 HTML <head></head> 标记中。我什至尝试过IE=8IE=9,但这也没有帮助。我的标签如下所示:

<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.1EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="X-UA-Compatible" content="IE=8" />
    ...
</head>
<body>
...
</body>
</html>

因为我仍然看到问题,所以我将以下内容添加到我的 Global.asax.cs 文件中:

void Application_End(object sender, EventArgs e)

    //  Code that runs on application shutdown
    Response.Headers.Add("X-UA-Compatible", "IE=Edge");

我仍然面临这个问题。我得到的错误是这样的:

HTML1202: http://intranetdomain/SampleProj/Default.aspx is running in Compatibility View because 'Display intranet sites in Compatibility View' is checked. 
Default.aspx
HTML1113: Document mode restart from IE7 Standards to IE9 Standards 
Default.aspx

有没有办法克服这个问题?

编辑:检查我的响应标题,在Global.asax.cs 中添加该行并没有将它们添加到我的标题中。我想知道为什么。

响应标头:

Key Value
Response    HTTP/1.1 200 OK
Cache-Control   private
Content-Type    text/html; charset=utf-8
Server  Microsoft-IIS/7.5
X-AspNet-Version    4.0.30319
X-Powered-By    ASP.NET
Date    Thu, 27 Oct 2011 20:39:55 GMT
Content-Length  29088

编辑 2:显然,Application_End 是错误的事件。相反,这样做会将元素注入到标题中:

void Application_BeginRequest(object sender, EventArgs e)

    Response.Headers.Add("X-UA-Compatible", "IE=Edge");

但问题本身仍然存在。

【问题讨论】:

您是否尝试将其添加为&lt;head&gt; 之后的第一个标签? IE 似乎只有在元标记列表中第一个出现时才会对此做出响应。 @SliverNinja:是的。我把它作为我的第一个标签。还用我正在使用的确切标记更新了我的问题。 应该根据这里的流行反馈工作 (***.com/questions/637039/…)。 在 Application_End 方法中添加响应标头是否有原因?那不应该在 Application_BeginRequest 方法中吗? Application_End 不是正确的事件。试试PreSendRequestHeaders (msdn.microsoft.com/en-us/library/…) 【参考方案1】:

问题可能是由于您的 Internet Explorer 兼容性视图设置造成的。如果您转到“工具”菜单,然后转到“兼容性视图设置”,请确保“在兼容性视图中显示 Intranet 站点”被选中。您可能会看到 IE 会根据您的主机名被检测为在您的 Intranet 中而强制您进入兼容性视图。

请注意 - 根据您的 IE 版本 - 您可能需要按左 Alt 键才能显示菜单栏,从中可以打开“工具”菜单。

【讨论】:

是的。确实如此。虽然我可以为自己更改此设置,但我正在尝试覆盖此设置(尽管我不是这很有意义)。我什至无法检测到此模式,因为此检查:if ($.browser.msie &amp;&amp; parseInt($.browser.version) != 9) alert("Not IE9!" 没有发现 IE9 处于兼容模式的事实。 我认为您不能覆盖该兼容性设置。请参阅***.com/questions/3726357/… 上的 cmets。 如果您在本地运行,请确保您通过您的主机文件欺骗了一个“实时查看”的 URL,它会认为该站点是一个 Internet 站点。 因为这正是在 /localhost/ 中工作的 Web 开发人员想要做的 - 默认情况下在 IE7 仿真中查看他或她的工作。好极了,微软。继续吃胶水。 teelahti.fi/blog/… 这是一个非常有用的提示,它解决了我的内部服务器兼容性问题。在那之前我尝试了你所有的解决方案。【参考方案2】:

您可以直接在 IIS 上设置兼容性设置。如果您单击该站点并打开响应标头,您可以添加值为 IE=X 的 X-UA-Compatible,其中 X 是您的目标版本。您也可以在服务器级别进行设置。但请记住,如果您在同一个盒子上有多个站点,您可能会遇到这些问题。尽管您可以在服务器级别应用,然后从站点级别删除继承的配置。

【讨论】:

这不能覆盖 IE 认为该站点是 Intranet 站点! 这对我有用。我在本地使用 IIS Express 使用 JQuery 2 开发站点。它与 IE 10 似乎默认用于本地站点的 IE 7 模式不兼容。打开配置文件 %UserProfile%\My Documents\IISExpress\config\applicationhost.config 和 。见msdn.microsoft.com/en-us/library/jj676913(v=vs.85).aspx【参考方案3】:

两年后,IE又出了两个新版本,这个IE8问题依旧出问题!

我发现,对于我们公司的 ASP.Net 应用程序,在 web.config 中添加“X-UA-Compatible”,在网页中,或者在它们后面的代码中,完全没有区别。

唯一对我们有用的是手动取消选中“在兼容性视图中显示 Intranet 集”复选框:

【讨论】:

这里相同...我不希望所有用户都取消选中此复选框:(【参考方案4】:

奇怪的是——如果你删除了runat="server"meta 标签就会起作用,按钮就会消失。 BNut 当然不建议删除runat

【讨论】:

以上是关于似乎无法摆脱兼容性视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用兼容性视图设置?

如何在 WinForms 应用程序中关闭 IE WebBrowserControl 上的兼容性视图?

js强制不使用“兼容性视图”

UISearchController - 与子视图控制器不兼容

如何在 IE 中禁用兼容性视图

故事板崩溃 - 编码兼容的关键场景视图控制器