IE10呈现在IE7模式下。 如何强制标准模式?

在微软的网站上,他们声称简单的文档types声明就足够了。 但是即使是这样一个简短的文档也可以回到IE7模式:

<!DOCTYPE html> <html> <head> <title></title> </head> <body> </body> </html> 

http://d.pr/i/fvzb+

Internet Explorer假设大多数网页都是针对早期版本的IE编写的,并查看doctype,元标记和HTML以确定最佳兼容模式(有时不正确)。 即使使用HTML5文档,如果是Intranet网站,IE仍然会将您的网站置于兼容模式。

要确保您的网站始终使用最新的标准模式,您可以确保Display intranet sites in Compatibly已closures。 但是,您必须在Web服务器本地的每台机器上执行此操作(说明如下)。

或者更好的是,你可以使用X-UA-Compatible头来closures服务器。 请注意, 使用元标记是行不通的。

 <!-- Doesn't always work! --> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

在整个MSDN中都提到使用主机头或元标记应该覆盖甚至是intranet sites 。 在Internet Explorer 8中的理解兼容模式的文章说了以下内容。

大量内部业务网站针对Internet Explorer 7进行了优化,因此此默认的exception保留了兼容性。 …如果使用元标记或http标题来设置文档的兼容模式,它将覆盖这些设置。

但是,在实践中这是行不通的,使用主机头是唯一的select。 文章的评论部分也显示了这个确切问题的很多例子。

使用Meta标签还有其他一些问题,例如,如果标签不是直接位于<head>标签之下,或者之前的数据太多(4k),则忽略该标签。 它也可能会触发文件在一些版本的IE,这将减缓渲染重新修复。 您可以在MSDN文章中阅读有关这些问题的更多信息。 最佳实践:获取您的HEAD 。

添加X-UA兼容标头

如果您使用.net和IIS,您可以将其添加到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文档types一起存在,一个站点将始终以最新的标准模式运行。

closures兼容性视图
closures兼容性视图可能仍然有用。 这样做不要在兼容性视图设置中Display all intranet sites in compatibility view中的Display all intranet sites in compatibility view

兼容性视图设置

你可以通过点击来获得菜单

在这里输入图像描述

编辑此答案也适用于IE9

这对我有用..

 <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

尝试将以下标记添加到头部

 <meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" /> 

元标记不为Intranet网站做任何事情,我的问题是在IE10兼容模式IE10呈现。 对我来说,解决这个问题的方法是将@ Jeow的答案作进一步处理,并在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。

当我做了下面的工作的时候,它完美的工作:

http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx

使用他们在第一个框中提供的确切示例(在底部添加缺less的</html> ),在IE10中打开它,标准被迫,我认为你可能需要HTML中的实际内容,以迫使标准不知道。

我的build议是用实际的内容(简单的东西)replace你的空代码,看看它做了什么。