在微软的网站上,他们声称简单的 doctype 声明就足够了。但即使是这么短的文档也会退回到 IE7模式:
<!DOCTYPE html> <html> <head> <title></title> </head> <body> </body> </html>
Http://d.pr/i/fvzb+
尝试在头部添加以下标记
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
Internet Explorer 假设大多数网页都是针对 IE 的早期版本编写的,并通过 doctype、 meta 标签和 HTML 来确定最佳的兼容模式(有时是不正确的)。即使有一个 HTML5文档类型 IE 仍然会把你的网站在兼容性模式,如果它是一个内部网站。
为了确保您的网站总是使用最新的标准模式,您可以确保 Display intranet sites in Compatibly是关闭的。然而,您必须在 Web 服务器本地的每台机器上执行此操作(说明如下)。
Display intranet sites in Compatibly
或者,更好的是,您可以使用 X-UA-Compatible头部从服务器关闭此功能。值得注意的是 using the meta tag will not work!
X-UA-Compatible
<!-- Doesn't always work! --> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
在整个 MSDN 中都提到,使用主机头或元标记应该覆盖甚至内部网站。了解 Internet Explorer 8中的兼容模式的文章说明了以下内容。
大量的内部商业网站都针对 Internet Explorer 7进行了优化,因此这个默认异常保持了兼容性。 ... 同样,如果使用 Meta 标记或 http 头来设置文档的兼容模式,它将覆盖这些设置。
然而,在实践中,这是行不通的,使用主机头是唯一可行的选项。本文的评论部分还展示了这个问题的许多实例。
使用 Meta 标记还有其他一些问题,例如,如果标记不直接在 <head>标记下,或者在它之前有太多的数据(4k) ,则忽略该标记。它还可能触发文档在某些版本的 IE 中重新解析,这将减慢渲染速度。您可以在 MSDN 文章 最佳实践: 让你的头部保持有序中了解有关这些问题的更多信息。
<head>
Adding the X-UA-Compatible header
If you are using .NET and IIS you can add this to the web.config, you could also do this programmatically:
web.config
<system.webServer> <httpProtocol> <customHeaders> <add name="X-UA-Compatible" value="IE=edge" /> </customHeaders> </httpProtocol> </system.webServer>
如果不使用 IIS,那么在任何语言中都很容易做到。例如,下面是如何在 PHP 中实现这一点:
header('X-UA-Compatible: IE=edge');
只要 X-UA-Compatible头文件与 HTML5 doctype 一起出现,站点将始终以最新的标准模式运行。
关闭兼容视图 关闭兼容视图可能仍然有用。要这样做,请在兼容视图设置中取消选中 Display all intranet sites in compatibility view。
Display all intranet sites in compatibility view
你可以通过点击 Alt来获得菜单。
剪辑 This answer also pertains to IE9.
这对我有用。
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
当我做下面这些事情的时候,它对我非常有效:
在 http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx频道
使用他们在第一个框中提供的确切例子(在底部添加了缺失的 </html>) ,在 IE10中打开它,标准是强制的,我认为你可能需要在 html 中的实际内容来强制标准不确定。
</html>
我的建议是用实际的内容(一些简单的内容)替换空代码,看看它能做什么。
Meta 标签对于 Intranet 站点没有任何作用,我的问题是 IE10在 IE10兼容模式下的渲染。对我来说,解决这个问题的方法是将 @ 犹太人的回答进一步扩展,并在 http 头中使用该值,在 IIS 下将以下内容添加到 web.config:
<system.webServer> <httpProtocol> <customHeaders> <clear /> <!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough --> <add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" /> </customHeaders> </httpProtocol> </system.webServer>
对于 IE 来说,intranet 站点包括面向公众的站点,而不是路由到外部——例如,一个在办公室工作的 Stackoverflow 员工可能会看到兼容模式的 Stackoverflow.com。