IE10以 IE7模式呈现。如何强制使用标准模式?

在微软的网站上,他们声称简单的 doctype 声明就足够了。但即使是这么短的文档也会退回到 IE7模式:

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


</body>
</html>

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

100452 次浏览

尝试在头部添加以下标记

<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 服务器本地的每台机器上执行此操作(说明如下)。

或者,更好的是,您可以使用 X-UA-Compatible头部从服务器关闭此功能。值得注意的是 using the meta tag will not work!

<!-- 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 文章 最佳实践: 让你的头部保持有序中了解有关这些问题的更多信息。

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:

<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

Compatibility View Settings

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

enter image description here

剪辑 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 中的实际内容来强制标准不确定。

我的建议是用实际的内容(一些简单的内容)替换空代码,看看它能做什么。

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。