<meta http-equiv="X-UA-Compatible" content="IE=edge"> 是什么作用?

1725

如果一个网页以<!DOCTYPE html>开头和不加的区别是什么?

<!DOCTYPE html> 
<html> 
  <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

如果页面以...开头

<!DOCTYPE html> 
<html> 
  <head> 
     <!-- without X-UA-Compatible meta -->
如果没有区别的话,我想我可以忽略 X-UA-Compatible 元标头,因为我希望在所有 IE 版本中以最标准的模式呈现。
12个回答

1944

2021年11月更新

由于这个答案已经超过10年了,我的建议是完全不要使用这个标签,除非你必须支持旧的遗留浏览器。

2015年10月更新

这个答案是几年前发布的,现在问题真正应该考虑的是是否应该在您的网站上使用X-UA-Compatible标签?随着微软对其浏览器所做的更改(下文详述),取决于您支持哪些微软浏览器,您可能不需要继续使用X-UA-Compatible标签。如果您需要支持IE9或IE8,则建议使用该标签。如果您只支持最新的浏览器(IE11和/或Edge),那么我建议完全放弃这个标签。如果您使用Twitter Bootstrap并且需要消除验证警告,则必须按指定顺序出现此标签。以下是其他信息:


X-UA-Compatible元标签允许网页作者选择以何种Internet Explorer版本呈现页面。IE11对这些模式进行了更改;请参阅下面的IE11注释。替代IE11的Microsoft Edge浏览器仅在某些情况下支持X-UA-Compatible元标签。请参阅下面的Microsoft Edge注释。
据微软称,使用X-UA-Compatible标签时,应尽可能将其放置在文档head的顶部:
如果您正在使用X-UA-Compatible META标记,您希望将其放置在页面HEAD的顶部。 Internet Explorer开始使用最新版本来解释标记。当Internet Explorer遇到X-UA-Compatible META标签时,它会重新开始使用指定版本的引擎。这是性能损失,因为浏览器必须停止并重新启动分析内容。
以下是您的选项:
- "IE=edge" - "IE=11" - "IE=EmulateIE11" - "IE=10" - "IE=EmulateIE10" - "IE=9" - "IE=EmulateIE9" - "IE=8" - "IE=EmulateIE8" - "IE=7" - "IE=EmulateIE7" - "IE=5"
为了尝试理解每个选项的含义,这里是微软提供的定义:
Internet Explorer支持多种文档兼容模式,可以启用不同的功能并影响内容的显示方式:
  • Edge模式告诉Internet Explorer以最高可用模式显示内容。对于Internet Explorer 9,这相当于IE9模式。如果未来的Internet Explorer版本支持更高的兼容性模式,则设置为edge模式的页面将以该版本支持的最高模式显示。当使用Internet Explorer 9查看时,这些页面仍将以IE9模式显示。 Internet Explorer支持多种文档兼容性模式,可以启用不同的功能并影响内容的显示:
  • IE11模式提供了对已建立和新兴行业标准(包括HTML5、CSS3等)的最高支持。
  • IE10模式提供了对已建立和新兴行业标准(包括HTML5、CSS3等)的最高支持。
  • IE9模式提供了对已建立和新兴行业标准(包括HTML5(工作草案)、W3C层叠样式表第3级规范(工作草案)、可缩放矢量图形(SVG)1.0规范等)的最高支持。[编辑注:IE 9不支持CSS3动画]。
  • IE8模式支持许多已建立的标准,包括W3C层叠样式表第2.1级规范和W3C选择器API;它还为W3C层叠样式表第3级规范(工作草案)和其他新兴标准提供了有限的支持。
  • IE7模式会将内容呈现为在Internet Explorer 7中显示标准模式的方式,无论页面是否包含了<!DOCTYPE>指令。
  • 仿真IE9模式告诉Internet Explorer使用<!DOCTYPE>指令来确定如何呈现内容。标准模式指令在IE9模式下显示,怪异模式指令在IE5模式下显示。与IE9模式不同,仿真IE9模式遵守<!DOCTYPE>指令。
  • 仿真IE8模式告诉Internet Explorer使用<!DOCTYPE>指令来确定如何呈现内容。标准模式指令在IE8模式下显示,怪异模式指令在IE5模式下显示。与IE8模式不同,仿真IE8模式遵守<!DOCTYPE>指令。
  • 仿真IE7模式告诉Internet Explorer使用<!DOCTYPE>指令来确定如何呈现内容。标准模式指令在Internet Explorer 7标准模式下显示,怪异模式指令在IE5模式下显示。与IE7模式不同,仿真IE7模式遵守<!DOCTYPE>指令。对于许多网站来说,这是首选的兼容模式。
  • IE5模式会将内容呈现为在Internet Explorer 7中以怪异模式显示的方式,这与在Microsoft Internet Explorer 5中显示内容的方式非常相似。

IE10 注意:从IE10开始,怪异模式的行为与浏览器早期版本有所不同。在IE9及更早版本中,怪异模式将网页限制为IE5.5支持的特性。在IE10中,怪异模式符合HTML5规范中指定的差异。

个人而言,我总是选择使用http-equiv="X-UA-Compatible" content="IE=edge"元标记,因为旧版本存在许多错误,我不希望IE决定进入“兼容模式”,并将我的网站显示为IE7 vs IE8或9。我总是喜欢IE的最新版本。

IE11

来自Microsoft

从IE11开始,边缘模式是首选文档模式;它代表了浏览器可用的最高现代标准支持。

使用HTML5文档类型声明以启用边缘模式:

<!doctype html>

边缘模式是在Internet Explorer 8中引入的,并在随后的每个版本中都可用。请注意,边缘模式支持的功能仅限于呈现内容的特定版本的浏览器支持的功能。

从IE11开始,文档模式已被弃用,除非在临时情况下,否则不应再使用。请确保更新依赖旧特性和文档模式的站点,以反映现代标准。
如果您必须针对特定文档模式进行目标设置,以使您的站点在重新设计以支持现代标准和功能的过程中正常运行,请注意,您正在使用一个过渡性功能,未来版本可能无法使用。
如果您目前使用x-ua-compatible头来针对传统文档模式进行目标设置,则可能您的站点无法反映IE11提供的最佳体验。 Microsoft Edge(随Windows 10捆绑的Internet Explorer替代品)
关于“Edge”版本IE的X-UA-Compatible元标记信息。来自Microsoft
介绍“活动”的Edge文档模式
我们在2013年8月宣布,自IE11起停用文档模式。随着我们最新的平台更新,遗留文档模式的需求主要局限于企业遗留Web应用程序。通过进行新的架构更改,这些遗留文档模式将与“活动”的Edge模式隔离开来,这将有助于保证那些依赖这些模式的客户的兼容性更高,并帮助我们在Edge上更快地进行改进。IE仍然会尊重由企业内部网站、兼容性视图列表中的站点和仅与企业模式一起使用时提供的文档模式。
公共互联网站点将使用新的Edge模式平台呈现(忽略X-UA-Compatible)。我们的目标是,从现在开始Edge是“活动”文档模式,以后不会再引入其他文档模式。
随着Microsoft Edge的变化,在大多数情况下不再支持文档模式,Microsoft有一个tool来扫描您的站点,检查并查看是否存在与Edge不兼容的代码。
还有chrome=1,您可以使用或与上述选项之一一起使用,例如:<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">chrome=1是针对Google的Chrome框架,其定义如下:
Google Chrome Frame是一个开源浏览器插件。安装了该插件的用户在使用浏览器打开页面时可以访问Google Chrome的开放网络技术和快速的JavaScript引擎。

Google Chrome Frame 无缝地增强了您在 Internet Explorer 中的浏览体验。它使用 Google Chrome 的渲染技术显示启用了 Google Chrome Frame 的站点,使您可以访问最新的 HTML5 功能以及 Google Chrome 的性能和安全功能,而不会以任何方式中断您通常的浏览器使用。

安装 Google Chrome Frame 后,Web 就变得更好了,而您则无需考虑太多。

但是,要使该插件正常工作,您必须在 X-UA-Compatible 元标记中使用 chrome=1

有关 Chrome Frame 的更多信息,请单击 此处

注意:Google Chrome Frame 仅适用于 IE6 至 IE9,并已于 2014 年 2月25日停用。更多信息请单击 此处。感谢 @mck 提供的链接。

验证:

HTML5

页面只有在使用 <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 时才会使用 W3 Validator 进行验证。如果使用其他值,则会出现错误:A meta element with an http-equiv attribute whose value is X-UA-Compatible must have a content attribute with the value IE=edge. 换句话说,如果您使用 IE=edge,chrome=1,它将无法验证。我完全忽略这个错误,因为现代浏览器会忽略这一行代码。
如果您必须拥有完全有效的代码,请考虑通过设置 HTTP 头在服务器级别执行此操作。值得注意的是,Microsoft 表示,If both of these instructions are sent (meta and HTTP), the developer's preference (meta element) takes precedence over the web server setting (HTTP header). 请参见 olibre's answerbitinn's answer 了解有关如何设置 HTTP 标头的更多详细信息。 XHTML 只要标签正确关闭(即使用 /> 而不是 >),使用 <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 不会出现验证问题。 Twitter Bootstrap(V3 及以下版本)

自2014年起,Bootstrap团队强烈推荐使用此标签。twbs团队编写的linter Bootlint在省略该标签时会发出warning。该linter区分警告和错误,因此省略此标签的严重程度可能被视为轻微。


如需了解关于X-UA-Compatible的更多信息,请参阅微软的 网站定义文档兼容性

如需了解IE支持的更多信息,请参阅 caniuse.com

如需了解Twitter Bootstrap的要求和更多信息,请参阅bootlint项目的 维基页面


48
如果请求头中没有包含"X-UA-Compatible",会发生什么? - Morgan Cheng
53
基本上,当您设置X-UA-Compatible时,它告诉IE如何根据您设置的值(如IE=edge等)来行事。如果没有设置,IE将按照它认为最好的方式来显示该网站。这可能是兼容模式,也可能是IE的最新版本。无论是什么,都是Microsoft / IE认为最好的。明白了吗? - L84
2
据我所知,最高可用模式基本上意味着IE 8可以支持IE8模式,IE9可以支持IE9模式,依此类推。我添加了Microsoft提供的每种模式的一些定义。 - L84
11
@AdrienBe - 我完全同意!到目前为止,IE 10 对我来说是最好的,但我憎恶其他任何版本。有一次我设置了一个页面,包含大约 200-300 行 HTML 和约 20 分钟的编码时间,并加上了一些效果。为了让 IE 正常工作,我不得不再添加另外 1,000 行代码(主要是第三方 JavaScript),并花费两到三个小时的工作时间!我真的很讨厌 IE。 - L84
9
谷歌Chrome框架将在2014年1月停用:http://blog.chromium.org/2013/06/retiring-chrome-frame.html - mck
显示剩余27条评论

364
使用content="IE=edge,chrome=1"可以跳过其他X-UA-Compatible模式。
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                   -------------------------- 
  • 不兼容图标
    IE9地址栏中没有显示兼容性视图按钮,同时页面也没有显示错位的菜单、图片和文本框。

  • 特性
    这个元标记是必需的,以启用IE8上的javascript::JSON.parse()(即使存在<!DOCTYPE html>)。

  • 正确性
    现代HTML/CSS/JavaScript的渲染/执行更加有效(更好)。

  • 性能
    Trident渲染引擎在其边缘模式下应该运行得更快。


使用方法

在你的HTML中

<!DOCTYPE html> 
<html> 
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  • IE=edge 表示 IE 应使用其渲染引擎的最新(edge)版本
  • chrome=1 表示如果已安装,则 IE 应使用 Chrome 渲染引擎

或者更好的方式是在您的 Web 服务器配置中:
(参见 RiaD's answer

  • Apache as proposed by pixeline

    <IfModule mod_setenvif.c>
      <IfModule mod_headers.c>
        BrowserMatch MSIE ie
        Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
      </IfModule>
    </IfModule>
    <IfModule mod_headers.c>
      Header append Vary User-Agent
    </IfModule>
    
  • Nginx as proposed by Stef Pause

    server {
      #...
      add_header X-UA-Compatible "IE=Edge,chrome=1";
    }
    
  • Varnish proxy as proposed by Lucas Riutzel

    sub vcl_deliver {
      if( resp.http.Content-Type ~ "text/html" ) {
        set resp.http.X-UA-Compatible = "IE=edge,chrome=1";
      }
    }
    
  • IIS (since v7)

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

自IE11以来,Microsoft建议使用Edge模式

正如Lynda(请参见评论)所注意到的那样,IE11中的兼容性变更建议使用Edge模式

从IE11开始,Edge模式是首选的文档模式;它代表了浏览器可用的最高现代标准支持。

但是Microsoft的立场并不清楚。另一个MSDN页面没有推荐Edge模式

因为Edge模式会强制所有页面在标准模式下打开,而不管Internet Explorer的版本如何,您可能会想在Internet Explorer中查看的所有页面上使用此模式。不要这样做,因为只有从Windows Internet Explorer 8开始才支持X-UA-Compatible头。

相反,Microsoft建议使用<!DOCTYPE html>

如果您希望所有支持的Internet Explorer版本都以标准模式打开您的页面,请使用HTML5文档类型声明[...]。
正如Ricardo在下面的评论中解释的,任何DOCTYPE(HTML4、XHTML1等)都可以用来触发标准模式,不仅仅是HTML5的DOCTYPE。重要的是始终在页面中拥有一个DOCTYPE。
甚至在Specifying legacy document modes的早期版本中,Clara Onager也注意到:
Edge模式仅用于测试目的;请勿在生产环境中使用。
这使得Usman Y感到非常困惑,认为Clara Onager所说的是:

The [...] example is provided for illustrative purposes only; don't use it in a production environment.

<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" >

好的...在这个答案的剩下部分,我会给出更多说明,为什么在生产中使用content="IE=edge,chrome=1"是一个好的实践。


历史

多年来(2000年至2008年),IE的市场份额超过80%。而IE v6被认为是一种事实上的标准(仅针对IE6,在2003年2004年、2005年和2006年中占据了80%至97%的市场份额,所有IE版本的市场份额更高)。

由于IE6没有遵守Web标准,开发人员必须使用IE6测试其网站。这对于微软(MS)来说是一个好机会,因为网络开发人员不得不购买MS产品(例如,没有购买Windows就无法使用IE),并且保持不符合标准可以获得更多利润(即微软希望成为唯一的标准,排除其他公司)。

因此,许多网站只兼容IE6,而由于IE不符合Web标准,所有这些网站在符合标准的浏览器上渲染效果不佳。更糟糕的是,许多网站只支持IE
然而,在此期间,Mozilla开始开发Firefox,尽可能地遵守所有Web标准(其他浏览器实现了像IE6一样的页面渲染)。随着越来越多的Web开发人员想要使用新的Web标准功能,越来越多的网站得到了Firefox的支持,而不是IE。
当IE市场份额下降时,微软意识到保持不兼容标准不是一个好主意。因此,微软开始发布新的IE版本(IE8 / IE9 / IE10),越来越尊重Web标准。

不兼容的网络问题

但问题在于,所有为IE6设计的网站:微软不能发布与这些旧IE6设计的网站不兼容的新IE版本。微软要求开发人员在其页面中添加额外的数据(X-UA-Compatible),而不是推断一个网站所设计的IE版本。

2016年仍在使用IE6

如今,IE6仍然被使用(2016年为0.7%)(2014年1月为4.5%),一些互联网网站仍然只兼容IE6。一些内部网站/应用程序使用IE6进行测试。一些内部网站仅在IE6上百分之百功能正常。这些公司/部门更喜欢推迟迁移成本:有其他优先事项,没有人再知道网站/应用程序是如何实现的,遗留网站/应用程序的所有者破产了...

2013年IE6使用率中,中国占50%,但随着中国Linux发行版的推广,这可能会在未来几年发生改变。

对您的Web技能有信心

如果您(尝试)尊重Web标准,则可以简单地始终使用http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"。为了与旧浏览器保持兼容性,只需避免使用最新的Web功能:使用最旧的要支持的浏览器支持的子集即可。或者,如果您想更进一步,可以采用优雅降级渐进增强不显眼的JavaScript等概念。(您可能还很高兴阅读一个Web开发人员应该考虑什么?。)

请勿关注最佳IE版本的渲染:这不是您的工作,因为浏览器必须符合Web标准。如果您的网站符合标准并使用较新的功能,则浏览器必须符合您的网站。
此外,由于有许多活动旨在消除IE6(IE6 no moreMS campaign),现在您可以避免在IE测试上浪费时间!
个人IE6经验
在2009-2012年期间,我曾为一家公司工作,该公司将IE6作为唯一允许使用的官方浏览器。我不得不为仅限于IE6的Intranet网站实施并尊重Web标准,但使用了IE6兼容的子集(HTML/CSS/JS)。
这很难,但当公司切换到IE8时,网站仍然能够良好呈现,因为我使用Firefox和firebug来检查Web标准兼容性 ;)

2
“边缘模式仅用于测试目的,请勿在生产环境中使用。”请参阅http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx。 - Carl Onager
5
请@ClaraOnager花点时间解释一下,从你的角度来看我的回答有什么问题。即使微软不推荐在生产环境中使用Edge mode,但在生产环境中使用它也有很好的理由。在技术上澄清我们的最佳实践非常重要。我喜欢分享我的知识和经验。希望你也是。我们可以共同进步;) 祝福 - oHo
2
嗨@Ricardo,我同意你的观点。微软在了解传统文档模式中的“提示”部分中说:“如果要让所有支持的Internet Explorer版本以标准模式打开您的页面,请使用HTML5[...]”。也许我的解释不清楚...也许我误解了什么...我已经修改了我的文本...你对我的修改有什么看法?你有什么建议可以改进我的回答吗?感谢您的反馈。干杯;-) - oHo
5
在你的第一个回答中,你指向的页面引用有误。微软表示不要在生产环境中使用以下代码片段:<meta http-equiv="X-UA-Compatible" content="IE=7,9,10"> 而非其他与Edge相关的内容。 - Usman Younas
3
关于Edge模式在生产环境中的使用。来自微软:从IE11开始,Edge模式是首选的文档模式;它代表了浏览器可用的最高现代标准支持。 - L84
显示剩余14条评论

62
区别在于,如果您只指定了DOCTYPE,IE的兼容性视图设置会优先考虑。默认情况下,这些设置会强制所有内部网站使用兼容性视图,而不考虑DOCTYPE。还有一个复选框,可以将所有网站都使用兼容性视图,而不考虑DOCTYPE

IE Compatibility View Settings dialog

X-UA-Compatible 会覆盖兼容性视图设置,因此页面将以标准模式呈现,而不管浏览器设置如何。这强制使用标准模式:

  • 内部网页
  • 当计算机管理员选择“在兼容性视图中显示所有网站”作为默认设置时的外部网页-例如大公司、政府、大学
  • 当您无意中进入Microsoft Compatibility View List
  • 用户已手动将您的网站添加到兼容性视图设置中的情况下

DOCTYPE 单独无法实现这一点;在这些情况下,无论 DOCTYPE 如何,您都将进入其中一种兼容性视图模式。

如果同时指定了 meta 标签和 HTTP 头,则以 meta 标签为优先。

这个答案是基于对IE8, IE9, 和 IE10中决定文档模式的完整规则进行审查的。请注意,查看DOCTYPE是决定文档模式的最后一种选择。

1
在内部网络的情况下,默认情况下IE10以兼容模式呈现。请参见stackoverflow.com/questions/13284083/…。此标签在Internet上默认情况下不需要,但在使用https://myintenralserver/myapp时默认需要。我想添加这个评论,因为从页面上任何答案的文本中都无法清楚地区分Internet和intranet之间的差异,只有截图中的文本才能说明清楚。 - yzorg
你说得对,我应该更清楚地表达。我已经重写了这篇文章;如果还有其他需要解决的问题,请告诉我。谢谢! - andrewdotn
谢谢!这个答案比其他关于内部网站的答案更清晰。其他答案会涉及到为什么和如何的技术细节。我讨厌微软IE。此外,好的写作:一个段落就能清楚地说明我们为什么需要元标记。太棒了! - Aniket Inge
3
我希望我能给这个答案点赞一百次。截图救了我一命。我在打这句话的时候,血压正在下降…… - EvilDr
太棒了!非常感谢你的回答。 - Seanosapien

27

使用以下代码可以强制IE隐藏地址栏中的烦人的浏览器兼容性按钮:

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

1
“边缘模式仅用于测试目的,请勿在生产环境中使用。”请参阅http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx。 - Carl Onager
4
为了确保兼容性,我在 <meta> 标签中使用了 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 这个语句,并加入了 chrome=1 指令,这样就可以提示 IE6、7、8 用户安装或使用 Chrome Frame。就连 HTML5 Boilerplate 都使用它。 - Ricardo Zea
10
@ClaraOnager 尽管微软这么说,但并不一定意味着他们是对的。自从<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">发布以来,我一直在使用它,没有任何问题。实际上,通过让用户的IE使用最新的引擎渲染我们构建的页面,我已经为我的团队和自己节省了很多麻烦。与你和微软相反,我建议每个人 每次 使用上述meta标签。只要IE还存在,我们就将被“迫”使用这个meta标签:p - Ricardo Zea
这在IE11中已经改变了。这个版本已经采取了戏剧性的举措,遵循官方标准进入了浏览器的世界。它已经走到了极端,甚至不将自己标识为Internet Explorer!现在它说它是“Netscape”,并且在浏览器信息中不包括任何内容来透露它的真实身份。如果您仍然在这个版本的IE浏览器中遇到任何怪异的问题,您需要通过设置<meta http-equiv="X-UA-Compatible" content="IE=10">将其强制转换为IE10。然后它会报告自己是Microsoft Internet Explorer。 - awe
如果有人能帮我解决同样的问题,请访问以下链接:http://stackoverflow.com/questions/22013880/how-to-set-ie-mode-by-meta-tag?noredirect=1#comment33368198_22013880 - dsi
显示剩余3条评论

25

由于我无法在标记答案上添加评论,所以我会在此处发布。

除了正确的答案,您确实可以进行验证。由于此元标记仅针对IE,因此您只需要添加IE条件即可。

<!--[if IE]>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->

这样做就像添加任何其他IE条件语句一样,仅适用于IE,不会影响其他浏览器。


5
除了针对HTML <=IE9的情况外,不应使用条件注释。即使在本答案撰写时这也是正确的。 - EKW

19

3
这是一个包含IE9的更新版本。天啊……http://ie.microsoft.com/testdrive/ieblog/2010/Jun/16_IEsCompatibilityFeaturesforSiteDevelopers_1.svg - Spiralis
3
这个链接包括IE10: http://msdn.microsoft.com/zh-cn/library/ff406036(v=vs.85).aspx不同的章节有其单独的流程图... - Spiralis
你误读了那个流程图。在没有X-UA-Compatible的情况下,浏览器会查找<!DOCTYPE>。如果发现了一个,它将以标准模式呈现(也称为“EmulateIE8”)。如果没有发现,则返回到“Quirks Mode”(怪异模式)。 - Chuck Le Butt
1
感谢您将图片上传到Stackoverflow。原始链接到Microsoft的都已失效。 - Elmue

14

只需一句话即可:指示 Internet Explorer 使用其最新的渲染引擎

<meta http-equiv="x-ua-compatible" content="ie=edge">

12

为了完整起见,您实际上不必将其添加到HTML中(在HTML5中未知http-equiv)

这样做并永远不要回头(第一个示例适用于apache,第二个示例适用于nginx

Header set X-UA-Compatible "IE=Edge,chrome=1"

add_header X-UA-Compatible "IE=Edge,chrome=1";

2
@HueiTan - 我认为发帖者的意思是,当您尝试使用W3验证器验证页面时,它会抛出一个错误:Bad value X-UA-Compatible for attribute http-equiv on element meta. - 这并不意味着它不能工作。它只是无效的代码。 - L84

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

为了使这行代码按预期工作,请确保:
  1. 它是紧随<head>标签之后的第一个元素
  2. 在meta标签之前没有使用条件注释,例如在<html>元素上
否则,一些IE版本会简单地忽略它。 更新 这两个规则虽然简化了,但易于记忆和验证。尽管MSDN文档声明您可以在此之前放置标题和其他meta标签,但我不建议这样做。 如何在条件注释中使其起作用。 有关head元素顺序的有趣文章。(blogs.msdn.com,适用于IE) 参考

根据MSDN文档X-UA-Compatible必须出现在网页头部(即HEAD部分),除了标题元素和其他meta元素外,必须在所有其他元素之前。


5

如果您在与服务器相同的网络中使用您的网站,IE 会喜欢切换到兼容模式,而不考虑 DOCTYPE。
添加 meta http-equiv="X-UA-Compatible" content="IE=Edge" 就可以禁用这种不需要的行为。


“同服务器所在网络”的另一个说法是“内部网”...因此,基本上IE10默认情况下无法正常访问所有的内部网站。请参见@AndrewNeitsch答案中的屏幕截图。 - yzorg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接