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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (40)

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

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

</body>
</html>

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

提问于
用户回答回答于

InternetExplorer假设大多数网页都是针对早期IE版本编写的,并且查看doctype、meta标记和HTML以确定最佳兼容性模式(有时是错误的)。即使使用HTML 5,如果是内部网站点,IE仍然会将您的网站置于兼容模式。

要确保网站始终使用最新的标准模式,可以确保Display intranet sites in Compatibly都关机了。但是,必须在Web服务器本地的每台机器上执行此操作。

或者,更好的是,可以使用与X-UA兼容的标头来关闭服务器。

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

在整个MSDN中,有人提到使用主机头或元标记应该覆盖甚至intranet sites

大量的内部商业网站为InternetExplorer 7进行了优化,因此此默认异常保留了这种兼容性。同样,如果使用Meta标记或http标头将兼容模式设置为文档,则将覆盖这些设置。

然而,在实践中,这将无法工作,使用主机头是唯一可行的选项。这篇文章的评论部分也展示了这个问题的许多例子。

使用Meta标记还存在其他几个问题,例如如果标记不在<head>标记,或者在它之前有太多的数据(4k)。它还可能触发文档在IE的某些版本中进行重新分析,这将减慢呈现速度。

添加与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兼容的标头与HTML 5文档类型一起存在,站点将始终以最新的标准模式运行。

关闭兼容性视图

关闭兼容性视图可能仍然有用。要这样做Display all intranet sites in compatibility view在“兼容性视图设置”中。

你可以通过打alt得到菜单

用户回答回答于

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

扫码关注云+社区