他们在Microsoft网站上声称简单的doctype声明就足够了。但是,即使文档如此简短,也可以回到IE7模式:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
他们在Microsoft网站上声称简单的doctype声明就足够了。但是,即使文档如此简短,也可以回到IE7模式:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Answers:
Internet Explorer假定大多数网页都是针对IE的早期版本编写的,并查看doctype,meta标签和HTML以确定最佳的兼容模式(有时是错误的)。如果是Intranet网站,即使使用HTML5 doctype,IE仍会将您的网站置于兼容模式。
为确保您的网站始终使用最新的标准模式,您可以确保已将其Display intranet sites in Compatibly
关闭。但是,您必须在Web服务器本地的每台计算机上执行此操作(以下说明)。
另外,更好的是,您可以使用X-UA-Compatible
标头将其从服务器上关闭。重要的是要注意,使用meta标签将不起作用!
<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
在整个MSDN中,都提到使用主机头或元标记甚至应覆盖Intranet站点。文章了解Internet Explorer 8中的兼容模式指出以下内容。
大量内部业务网站针对Internet Explorer 7进行了优化,因此此默认异常保留了该兼容性。...同样,如果使用元标记或http标头设置文档的兼容模式,它将覆盖这些设置。
但是,实际上这是行不通的,使用主机头是唯一可行的选项。本文的评论部分还显示了许多有关此确切问题的示例。
使用元标记还存在其他一些问题,例如如果标记不在标记的正下方<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文档类型一起出现,网站将始终以最新的标准模式运行。
关闭兼容性视图关闭兼容性视图
可能仍然有用。为此,请取消选中Display all intranet sites in compatibility view
“兼容性视图设置”。
您可以通过点击Alt来显示菜单。
编辑 此答案也与IE9有关。
alt
出工具栏,它在工具下->兼容视图设置
这对我有用。
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
X-UA-Compatible
meta标签但仍未将IE10标准文档模式作为Page Default触发的托管网站(非Intranet站点),我发现如果meta标签位于脚本标签下面或仅仅是<head>
IE10距DOM树顶部的距离太远,它哭泣并将文档模式设置为IE8标准。因此,请保持您的IE=edge
元标记接近<title>
标记。如果不是在标题模板文件中硬编码,则对Wordpress网站的修复并非总是简单的。不确定IE11是否关心元标记在哪里,但希望这对某人有帮助。
尝试将以下标签添加到头部
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
IE=Edge
改为
meta标签对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/zh-cn/library/gg699338(v=vs.85).aspx上
使用了他们在第一个框中提供的确切示例(</html>
在底部添加了缺少的内容),在IE10中将其打开,并强制使用了标准,我想您可能需要html中的实际内容来强制标准,但不确定。
我的建议是将您的空代码替换为实际的内容(简单一些),然后看看它能做什么。