似乎无法摆脱兼容性视图?
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=8
和IE=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");
但问题本身仍然存在。
【问题讨论】:
您是否尝试将其添加为<head>
之后的第一个标签? 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 && 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 上的兼容性视图?