X-UA-Compatible设置为IE = edge,但仍不停止Compatibility Mode

| 我很困惑。我应该可以设置
<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />
IE8和IE9应该使用最新的渲染引擎来渲染页面。但是,我只是对其进行了测试,并且如果在我们网站的其他位置打开了兼容模式,即使我们强迫不要这样做,该模式也将保留在我们的页面上。 您应该如何确保IE不使用兼容模式(即使在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\" /> 
编辑:我刚刚了解到IE8的默认设置是对Intranet网站使用IE7兼容模式。这会覆盖X-UA-Compatible元标记吗?     
已邀请:
        如果您需要为Intranet网站覆盖IE \的“兼容性视图设置”,则可以在web.config(IIS7)中或通过网站属性(IIS6)中的自定义HTTP标头进行设置,并设置X-UA-在那里兼容。 meta标记不会覆盖“兼容性视图设置”中IE的Intranet设置,但是如果您在托管服务器上进行设置,它将覆盖兼容性。 IIS7中的web.config示例:
<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name=\"X-UA-Compatible\" value=\"IE=EmulateIE8\" />
      </customHeaders>
    </httpProtocol>
</system.webServer>
编辑:我从ѭ5之前删除了
clear
代码;这是复制和粘贴过程中不必要的监督。好收获,评论员!     
        服务器端解决方案是推荐的解决方案,如@TimmyFranks在他的答案中建议的那样,但是如果需要在页面级别实施ѭ6规则,请阅读以下提示,以从已经被烧死的人的经验中受益
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 \的小组写了有关此错误的信息-http://h5bp.com/i/378 他们有几种解决方案。 关于Intranet和兼容性视图,当您转到工具>兼容性视图设置时,会有一些设置。     
        请注意,如果您是通过PHP提供的,则也可以使用以下代码对其进行修复。
header(\"X-UA-Compatible: IE=Edge\");
    
        事实证明,这与Microsoft的“智能”选择有关,即使将“ 6”设置为“ 15”,也可以使所有Intranet站点强制进入兼容模式。     
        在本地主机的IE7文档标准中,我也遇到了相同的IE9渲染问题。 我尝试了许多条件注释标签,但未成功。 最后,我删除了所有条件标签,并像下面这样在头之后立即添加了meta标签,它的工作原理就像是魅力。
<head>
<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">
希望能帮助到你     
        即使您未选中\“在“兼容性视图中显示Intranet网站””选项,并且在响应标题中具有“ X-UA-兼容”,您的浏览器仍可能默认为““兼容性视图””是另一个原因-您的组策略。在控制台上查看以下消息:   HTML1203:xxx.xxx已配置为通过组策略在兼容性视图中运行。 其中xxx.xxx是您网站的域(即test.com)。如果看到此消息,则将设置您域的组策略,以便任何以test.com结尾的网站都将自动以兼容模式呈现,而不管文档类型,标头等如何。 有关更多信息,请参见以下链接(解释html代码):http://msdn.microsoft.com/zh-cn/library/ie/hh180764(v=vs.85).aspx     
正如NEOSWF在上面指出的那样,Paul Irish条件注释停止了具有任何影响的meta标签。 这里有所有修复程序(http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/) 这些包括: 使用服务器标头添加两个HTML类,并在doctype上方添加条件注释。 在我的最新项目中,我决定删除Paul Irish条件注释。我不喜欢在html之前添加任何内容而不先进行大量测试的想法,很高兴仅通过查看HTML来查看已设置的内容。 最后,我在身体后面直接围着一个div,并使用了条件注释,例如
  <!--[if IE 7]><div class=\"ie7\"><!--<![endif]-->
  ... regular body stuff
  <!--[if IE 7]></div><!--<![endif]-->
我本来可以做到这一点,但是使用Wordpress等CMS则比较困难。 显然,它是标记内的另一个DIV,但仅适用于较旧的浏览器。 我认为这可能是基于每个项目的决定。 我还阅读了一些有关charset meta标记的信息,该标记必须位于前1024个字节中,因此可以确保这一点。 有时最简单,最容易阅读的想法是最好的,绝对值得考虑!感谢上面链接的第6条评论指出了这一点。     
        “ 6”将仅覆盖文档模式,而不是浏览器模式,并且不适用于所有Intranet站点;如果是这种情况,最好的解决方案是禁用“在兼容性视图中显示Intranet站点”并设置组策略设置以指定哪些Intranet站点需要兼容模式。     
        我将以下内容添加到我的htaccess文件中,该文件可以成功实现:
BrowserMatch MSIE ie
Header set X-UA-Compatible \"IE=Edge,chrome=1\" env=ie
    
        此外,X-UA兼容必须是头部中的第一个meta标签
<head>
    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">
</head>
顺便说一句,正确的顺序或主要的头标签是:
<head>
    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">
    <meta charset=\"utf-8\">
    <title>Site Title</title>
    <!-- other tags -->
</head>
这条路 我们将渲染引擎设置为在IExplorer开始处理之前使用 然后我们将文档设置为用于所有浏览器的编码 然后我们打印标题,将使用已经定义的编码进行处理。     
        蒂米·弗兰克斯(Timmy Franks)适合我。今天我们刚遇到一个问题,即客户端在公司范围内拥有IE8,这迫使我们为其Intranet编写的网站进入兼容模式。设置“ IE-Edge”似乎可以解决。
<httpProtocol>
  <customHeaders>
    <clear />
    <add name=\"X-UA-Compatible\" value=\"IE=Edge\" />
  </customHeaders>
</httpProtocol>
    
        对于Nginx,
add_header \"X-UA-Compatible\" \"IE=Edge,chrome=1\";
参考:https://github.com/h5bp/server-configs/commit/a5b0a8f736d68f7de27cdcb202e32975a74bd2c5     
        IE 11不允许您再通过发送标头来覆盖浏览器兼容性视图设置...
<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />  
强制浏览器不使用兼容性视图的唯一方法是让用户在其浏览器中禁用它。我们是一个Intranet站点,默认的IE选项是对Intranet站点使用兼容性视图。真痛苦! 我们能够防止用户更改IE 9和10用户的浏览器设置,但是在IE 11中不再起作用。我们的IE用户正在切换到Chrome,这不是问题,而且从来没有是。     
        我能够解决在使用PHP的HTML之前加载标头的问题,并且效果很好。
<?php 
header( \'X-UA-Compatible: IE=edge,chrome=1\' );
header( \'content: width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\' );
include(\'ix.html\');
?> 
ix.html是我发送标题后要加载的内容。     
        我在IE11中遇到同样的问题。这些答案都不能解决我的问题。稍作研究后,我注意到浏览器在企业模式下运行。 (通过按F12进行验证,然后单击“仿真”选项卡,查找浏览器配置文件的下拉列表)设置已锁定,不允许我更改设置。 从以下注册表项中删除CurrentVersion后,可以将配置文件更改为桌面:
HKEY_CURRENT_USER\\Software\\Policies\\Microsoft\\Internet Explorer\\Main\\EnterpriseMode
将模式更改为桌面后,此帖子上的答案将起作用。     
        当您的浏览器以兼容模式打开时,即使您从Web浏览器和本地组策略编辑器中删除并关闭了所有兼容模式配置,也可以尝试禁用注册键。 在使用域和子域连接服务器端时,我也会遇到这种情况。该计算机仅限于以兼容模式打开所有子域。 禁用Intranet的兼容模式 HKEY_LOCAL_MACHINE-软件-策略-Microsoft-Internet Explorer-BrowserEmulation-> IntranetCompalityMode值应为0(零)。并从PolicyList中删除现有域名。 否则,您可以添加包含0(零)值数据的新值(DWORD)。     
在尝试了多种组合后,我遇到了同样的问题 注意我已经检查了Intranet的兼容性
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">
<head runat=\"server\">
    
        如果使用的是LAMP堆栈,则将其添加到Web根文件夹中的.htaccess文件中。无需将其添加到每个PHP文件中。
<IfModule mod_headers.c>
    Header add X-UA-Compatible \"IE=Edge\"
</IfModule>
    

要回复问题请先登录注册