在微软的网站上,他们声称简单的doctype声明就足够了。但即使是像这样简短的文件又回归到IE7模式:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
答案 0 :(得分:243)
Internet Explorer假设大多数网页都是针对早期版本的IE编写的,并查看doctype,meta标签和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 sites
。文章Understanding compatibility modes in internet explorer 8说明了以下内容。
大量内部业务网站针对Internet Explorer 7进行了优化,因此此默认异常保留了该兼容性。 ... 再次,如果使用Meta标签或http标头为文档设置兼容模式,它将覆盖这些设置。
但是,实际上这不起作用,使用主机头是唯一有效的选项。本文的评论部分还展示了这个确切问题的大量例子。
使用Meta标签还有其他几个问题,例如如果标签不在<head>
标签下面或者前面有太多数据(4k),则忽略标签。它还可能触发在某些IE版本中重新分析文档,这将减慢渲染速度。您可以在MSDN文章Best Practice: Get your HEAD in order上阅读有关这些问题的更多信息。
添加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 doctype一起出现,网站将始终以最新的标准模式运行。
关闭兼容性视图
关闭兼容性视图可能仍然有用。为此,请在兼容性视图设置中取消Display all intranet sites in compatibility view
。
您可以点击alt
来获取菜单
修改强> 这个答案也适用于IE9
答案 1 :(得分:25)
这对我有用..
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
答案 2 :(得分:10)
尝试将以下标记添加到头部
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
答案 3 :(得分:2)
元标记对Intranet站点没有任何作用,我的问题是IE10兼容模式下的IE10渲染。解决这个问题的方法是进一步使用@Jeow's answer并在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。
答案 4 :(得分:1)
当我完成下列内容时,它对我来说非常有用:
在http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx
上使用了他们在第一个框中提供的确切示例(在底部添加了缺少的</html>
),在IE10中打开它并强制使用标准,我认为你可能需要html中的实际内容才能强制使用虽然标准不确定。
我的建议是用实际内容(简单的东西)替换你的空代码,看看它是做什么的。