在微软的网站上,他们声称简单的 doctype 声明就足够了。但即使是这么短的文档也会退回到 IE7 模式:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
在微软的网站上,他们声称简单的 doctype 声明就足够了。但即使是这么短的文档也会退回到 IE7 模式:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Internet Explorer 假设大多数网页都是针对早期版本的 IE 编写的,并查看文档类型、元标记和 HTML 以确定最佳兼容性模式(有时不正确)。即使使用 HTML5 文档类型,如果它是 Intranet 站点,IE 仍会将您的网站置于兼容模式。
为确保您的网站始终使用最新的标准模式,您可以确保Display intranet sites in Compatibly
将其关闭。但是,您必须在 Web 服务器本地的每台计算机上执行此操作(说明如下)。
或者,更好的是,您可以使用X-UA-Compatible
标头从服务器将其关闭。请务必注意,使用元标记将不起作用!
<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
在整个 MSDN 中,都提到使用主机标头或元标记应该覆盖甚至 Intranet 站点。了解 Internet Explorer 8 中的兼容性模式一文说明了以下内容。
大量内部企业网站针对 Internet Explorer 7 进行了优化,因此此默认例外保留了该兼容性。...再次,如果使用 Meta 标签或 http 标头为文档设置兼容模式,它将覆盖这些设置。
但是,实际上这不起作用,使用主机标头是唯一有效的选项。文章的评论部分还显示了这个确切问题的许多示例。
使用 Meta 标签还有其他几个问题,例如如果标签不在标签的正下方<head>
或之前的数据过多 (4k),则忽略标签。它还可能触发在某些版本的 IE 中重新解析文档,这会减慢渲染速度。您可以在 MSDN 文章Best Practice: Get your HEAD in order中阅读有关这些问题的更多信息。
添加 X-UA-Compatible 标头
如果您使用的是 .NET 和 IIS,您可以将其添加到 .NET 中,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 文档类型一起存在,站点将始终以最新的标准模式运行。
关闭兼容性视图 关闭兼容性视图
可能仍然有用。为此,请Display all intranet sites in compatibility view
在兼容性视图设置中取消勾选。
您可以通过点击Alt来获取菜单。
编辑 这个答案也适用于 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 的答案web.config
,并通过在 IIS 下添加以下内容在 http 标头中使用该值:
<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
使用了他们在第一个框中提供的确切示例(在底部添加了缺少</html>
的内容),在 IE10 中打开它并强制标准,我认为您可能需要 html 中的实际内容才能强制标准不确定。
我的建议是用实际内容(简单的东西)替换你的空代码,看看它做了什么。