内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
在微软的网站上,他们声称简单的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
得到菜单