使用标签强制关闭IE兼容模式

我正在为一个在所有内部网站点上强制兼容模式的客户端工作。我想知道是否有一个标签,我可以把我的HTML强制兼容性模式关闭。

454160 次浏览

我相信这能达到目的:

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

有“边缘”模式

<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以最高可用模式显示内容,这实际上打破了“锁定”模式。在IE8中,这相当于IE8模式。如果(假设)未来的ie版本支持更高的兼容性模式,设置为Edge模式的页面将以该版本支持的最高模式显示;然而,当使用IE8浏览时,这些页面仍然会以IE8模式显示。

但是,在生产使用中不鼓励使用“edge”模式:

建议Web开发人员将Edge模式的使用限制在测试页面和其他非生产用途上,因为在Windows Internet Explorer的未来版本中呈现页面内容可能会出现意想不到的结果。

说实话,我不完全明白为什么。但根据这一点,目前最好的方法是使用IE=8

经过许多小时的故障排除这个东西…下面是一些来自X-UA-Compatible文档的快速亮点

使用<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" < / p >

IE8外网默认为标准模式,内网默认为怪异模式。 如果将doctype设置为xhtml transitional,则忽略HTML元标记。 解决方案是在代码中添加HTTP报头。 这对我们很管用。 现在我们的内部网站点正在强制IE8以标准模式呈现应用程序

添加到基页类的PageInit (ASP.net c#):

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
< p >参考: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html < / p >

如果您正在处理内部网专区中的页面,您可能会发现无论您做什么,IE9都会进入IE7 Compat模式。

这是由于IE兼容性设置中的设置,它说所有的Intranet站点都应该在兼容模式下运行。你可以通过组策略取消勾选(或者只是在IE中取消勾选),或者你可以设置如下:

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

这是可行的(详见其他答案),但最初可能不是这样:它需要在样式表声明之前出现。如果你不这样做,它就会被忽略。

元标签解决方案并不适合我们,但在响应头中设置它却可以:

header('X-UA-Compatible: IE=edge,chrome=1');

基于我最近的一些经验,关于这个话题还有一些注释。我工作的大学为所有的Intranet站点提供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>

为了让这个头实际被发送,你必须确保在Apache中开启了mod_headers。如果你想确保你打开了这个mod,把它放在一个可以运行php的页面中:

<pre>
<?php
print_r(apache_get_modules());
?>
</pre>

这是由于IE兼容性设置中的设置,它说所有的Intranet站点都应该在兼容模式下运行。你可以通过组策略取消勾选(或者只是在IE中取消勾选),或者你可以设置如下:

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

显然,不可能改变兼容性视图设置作为组策略,但这是可以在注册表中更改的东西,这个元标签对我来说很好,我必须使所需的属性作为html表单的一部分工作,它在chrome和firefox中工作,但不是IE。

下面是浏览器对每个html 5元素的支持。

http://html5readiness.com/

注意一个共同点谷歌Chrome,它支持一切。希望这对你有所帮助

正如这个回答对一个相关问题的建议,“边缘”模式可以在Web中设置。配置文件。这将使它适用于从应用程序返回的所有HTML,而不需要将它插入到单个页面:

<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>

同样的步骤也可以通过使用IIS管理器修改“HTTP响应头”为IIS服务器、整个网站或特定的应用程序完成。

< p >插入 作为标签下的第一件物品。< / p >

这将迫使IE在IE的物理版本中呈现页面,并忽略浏览器的“模式设置”。这可以在开发人员工具中设置,尝试将其更改为旧版本的IE进行测试,这应该被忽略,页面应该看起来完全相同。

如果你可以访问服务器,最可靠的方法是在服务器本身,在IIS中进行。进入IIS HTTP响应头。添加 名称:X-UA-Compatible < br > 价值:IE =边缘 这将覆盖你的浏览器和你的代码

如果你想要每个单独的网页加载所选择的内容,并使用asp.net。只需将其应用为视图>共享>Layout.cshtml中的标题标签下的第一个标签

只是一个小提示