我很困惑。我应该可以设置
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
并且IE8和IE9应该使用最新的呈现引擎来呈现页面。但是,我刚刚对其进行了测试,并且如果在我们网站的其他位置打开了兼容模式,则即使our page处于强制状态,它也将保持打开状态。
您应该如何确保IE not使用兼容模式(即使在Intranet中也是如此?
FWIW,我正在使用HTML5 DocType声明(<!doctype html>
)。
以下是页面的前几行:
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="innerpage no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="innerpage no-js ie8"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html lang="en" class="innerpage no-js">
<!--<![endif]-->
<head>
<meta charset="ISO-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
编辑:I just learned IE8的默认设置是对Intranet站点使用IE7兼容模式。这会覆盖X-UA-Compatible元标记吗?
如果需要覆盖Intranet网站的IE兼容性视图设置,则可以在web.config(IIS7)中或通过网站属性(IIS6)中的custom HTTP headers进行覆盖,并在其中设置X-UA-Compatible。 meta标记不会覆盖“兼容性视图设置”中IE的Intranet设置,但是如果在托管服务器上进行设置,它将覆盖兼容性。
IIS7中web.config的示例:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=EmulateIE8" />
</customHeaders>
</httpProtocol>
</system.webServer>
Edit:我从clear
之前删除了add
代码;这是复制和粘贴过程中不必要的监督。好收获,评论员!
此外,X-UA兼容必须是头部中的第一个meta标签
蒂米·弗兰克斯(Timmy Franks)适合我。今天,我们刚遇到一个问题,即客户端在公司范围内拥有IE8,这迫使我们为其Intranet编写的网站进入兼容模式。设置“ IE-Edge”似乎可以解决。
对于Nginx,
IE 11不允许您再通过发送标头来覆盖浏览器兼容性视图设置...
我能够解决这个问题,在使用PHP的HTML之前加载标头,并且效果很好。
我在IE11中遇到了相同的问题。这些答案都不能解决我的问题。经过一番挖掘,我发现浏览器以Enterprise
当您的浏览器以兼容模式打开时,即使您从Web浏览器和本地组策略编辑器中删除并关闭了所有兼容模式配置,也可以尝试从注册码中禁用。
在尝试了多种组合后,我遇到了同样的问题注意我已经检查了Intranet的兼容性
[如果使用的是LAMP堆栈,则将其添加到Web根文件夹中的.htaccess文件中。无需将其添加到每个PHP文件中。
服务器端解决方案是推荐的解决方案,如@TimmyFranks在其答案中建议的那样,但是如果需要在页面级别实施X-UA-Compatible
规则,请阅读以下提示,以从其中的经验中受益已经被烧死的人
X-UA-Compatible
元标记必须出现在<head>
元素中标题的后面。在此之前,不能放置任何其他元标记,css链接和js脚本调用。
<head>
<title>Site Title</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta charset="utf-8">
<script type="text/javascript" src="/jsFile.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="shortcut icon" href="/apple-touch-icon.png" />
</head>
如果页面中有任何条件注释(假设位于<html>
中,则必须将其置于<head>
之后。
// DON'T: place class inside the HTML tag
<!--[if gt IE 8]><!-->
<html class="aboveIe8">
<!--<![endif]-->
// DO: place the class inside the BODY tag
<!--[if gt IE 8]><!-->
<body class="aboveIe8">
<!--<![endif]-->
Html5BoilerPlate的团队写了这个bug-http://h5bp.com/i/378他们有几种解决方案。
关于Intranet和兼容性视图,当您转到工具>兼容性视图设置时,会有一些设置。
“>
请注意,如果您是通过PHP提供的,则也可以使用以下代码对其进行修复。
事实证明,这与Microsoft's "intelligent" choice有关,即使X-UA-Compatible
设置为IE=edge
,也要使所有Intranet站点强制进入兼容模式。
我在本地主机的IE7文档标准中也遇到了相同的IE9渲染问题。我尝试了许多条件注释标签,但未成功。最后,我只是删除了所有条件标签,并在如下所示的头部之后立即添加了meta标签,它的工作方式就像是魅力。
即使您未选中“在兼容性视图中显示Intranet网站”选项,并且响应标题中具有X-UA-Compatible,您的浏览器仍然可能默认为“兼容性视图”的另一个原因-您的组策略。在控制台上查看以下消息:
正如NEOSWF在上面指出的那样,Paul Irish条件注释使meta标签停止起作用。
X-UA-Compatible
将仅覆盖文档模式,而不覆盖浏览器模式,并且不适用于所有Intranet站点;如果是这种情况,最好的解决方案是禁用“在兼容性视图中显示Intranet站点”和set a group policy setting以指定哪些Intranet站点需要兼容模式。
我将以下内容添加到我的htaccess文件中,该文件可以完成窍门: