IE10以IE7模式呈现.如何强制标准模式?

fir*_*dev 121 windows internet-explorer windows-8 internet-explorer-10

在微软的网站上,他们声称简单的doctype声明就足够了.但即使是像这样简短的文档又回归到IE7模式:

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

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*tle 243

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

为确保您的网站始终使用最新的标准模式,您可以确保Display intranet sites in Compatibly已关闭.但是,您必须在Web服务器本地的每台计算机上执行此操作(请参阅下文).

或者更好,您可以使用X-UA-Compatible标头将其从服务器关闭.重要的是要注意使用元标记不起作用!.

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Run Code Online (Sandbox Code Playgroud)

在整个MSDN中,提到使用主机头或元标记应该覆盖甚至intranet sites.Internet Explorer 8中的了解兼容模式的文章说明如下.

大量内部业务网站针对Internet Explorer 7进行了优化,因此此默认异常保留了该兼容性....再次,如果使用Meta标签或http标头为文档设置兼容模式,它将覆盖这些设置.

但是,实际上这不起作用,使用主机头是唯一有效的选项.本文的评论部分还展示了这个确切问题的大量例子.

使用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>
Run Code Online (Sandbox Code Playgroud)

如果您没有使用IIS,那么很容易用任何语言进行操作,例如这里是如何在php中执行的:

header('X-UA-Compatible: IE=edge');
Run Code Online (Sandbox Code Playgroud)

只要X-UA-Compatible标头与html5 doctype一起出现,网站将始终以最新的标准模式运行.

关闭兼容性视图关闭兼容性视图
可能仍然有用.要Display all intranet sites in compatibility view在兼容性视图设置中取消选中.

兼容性视图设置

您可以通过点击alt获取菜单来实现此目的

在此输入图像描述

编辑 此答案也适用于IE9

  • +1000;).当他们在他们的问题中有任何[IE]标签和"兼容"字样时,甚至在他们实际发布该问题之前,SO应该强制每个OP看到这个答案. (25认同)
  • @Nick使用`alt`打开工具栏,它在工具下 - > compat视图设置 (2认同)
  • 我尝试将自定义标题部分添加到项目的web.config中.对于使用Intranet站点的兼容性视图,设置似乎不会覆盖IE设置. (2认同)

JGi*_*tin 25

这对我有用..

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Run Code Online (Sandbox Code Playgroud)

  • 正如Lavinski上面所说的那样,"元标记对内部网站点没有任何作用." (11认同)
  • 对于具有"X-UA-Compatible"元标记但尚未触发IE10标准文档模式为"页面默认"的托管网站(非内部网站点)而言,我发现如果元标记是IE10位于脚本标签下方,或者距离DOM树中"<head>"的顶部太远,IE10会将文档模式设置为IE8标准.因此,保持`IE = edge`元标记关闭`<title>`标记.当WordPress网站没有在头文件模板文件中进行硬编码时,并不总是一个简单的修复.不确定IE11是否关心元标记的位置,但希望这证明对某人有帮助. (2认同)
  • 此标记也需要是<head>中的第一个标记 (2认同)

Jeo*_*uan 10

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

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
Run Code Online (Sandbox Code Playgroud)

  • 如果您遵循规范,那不是风险,您没有看到人们为Chrome做这件事. (7认同)
  • 那应该是`IE = Edge`而不是 (5认同)