我正在为一个要求所有内部网站强制使用兼容性模式的客户工作。我想知道是否有一个标签可以放入我的HTML中,用于关闭兼容性模式。
我正在为一个要求所有内部网站强制使用兼容性模式的客户工作。我想知道是否有一个标签可以放入我的HTML中,用于关闭兼容性模式。
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>My Web Page</title>
</head>
<body>
<p>Content goes here.</p>
</body>
</html>
根据MSDN页面:
Edge模式告诉Windows Internet Explorer以最高可用模式显示内容,这实际上打破了“锁定”范例。在Internet Explorer 8中,这相当于IE8模式。如果(假设的)将来的Internet Explorer版本支持更高的兼容性模式,则设置为Edge模式的页面将以该版本支持的最高模式显示;但是,在Internet Explorer 8中查看这些页面时,它们仍将以IE8模式显示。
然而,“edge”模式不鼓励在生产环境中使用:
建议Web开发人员将Edge模式的使用限制在测试页面和其他非生产用途中,因为在未来的Windows Internet Explorer版本中呈现页面内容可能会产生意想不到的结果。
但我老实说并不完全明白原因。但根据此文,目前最好的方式是使用IE = 8
。
IE=10
。如果你已经在IE10(预览版)中测试过你的网站,则可以使用此选项;否则,建议暂时仍使用IE=9
。 - calvinf经过多个小时的故障排除...以下是一些快速亮点,来自于X-UA-Compatible
的文档: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
使用<meta http-equiv="X-UA-Compatible" content=" _______ " />
标准用户代理模式(非仿真模式)会忽略您页面中的<!DOCTYPE>
指令,并根据IE该版本支持的标准进行渲染(例如,IE=8
将更好地遵守表格边框间距和某些伪类选择器,而不是IE=7
)。
相反,仿真模式会告诉IE遵循您页面中的任何<!DOCTYPE>
指令,基于您选择的版本渲染标准模式和基于IE=5
的怪癖模式。
content
属性的可能值为:
content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
如果您正在使用内部网区域的页面,则可能会发现无论您做什么,IE9 都会进入 IE7 兼容模式。
这是由于 IE 兼容性设置中的设置导致的,该设置表示所有内部网站都应在兼容性模式下运行。 您可以通过组策略取消此选项(或在 IE 中取消勾选它),或者可以设置以下内容:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
这个方法是有效的(如其他答案所述),但可能一开始并不明显:它需要在样式表声明之前出现。如果你没有这样做,它将被忽略。
我相信这个方法会奏效:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
这个步骤也可以通过使用IIS管理器修改“HTTP响应头”来完成,可应用于整个IIS服务器、网站或特定应用程序。
元标签解决方案对我们不起作用,但将其设置在响应头中确实有效:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
属性的解释,https://dev59.com/kmEh5IYBdhLWcg3wwlu8#22059516。请注意,Chrome Frame 已经被淘汰。http://blog.chromium.org/2013/06/retiring-chrome-frame.html - GajusIE8在Internet下默认为标准模式,在Intranet下默认为怪异模式。
如果doctype设置为xhtml transitional,则HTML meta标签将被忽略。
解决方法是在代码中添加HTTP头。
我们采用这种方法解决了问题。
现在我们的Intranet网站能够强制IE8以标准模式呈现应用程序。
在基本页面类(ASP.net C #)的PageInit中添加:
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
reference: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
根据我最近的经验,这个主题还有一些需要注意的地方。 我工作的大学为所有内部网站设置了兼容模式的IE 8笔记本电脑。 我尝试添加元标记以禁用我的网站提供的页面上的此模式,但IE始终忽略此标记。 正如Lance在他的帖子中提到的那样,添加响应头解决了此问题。 这是基于HTML5锅炉板方法设置标题的方式:
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*...
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />