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 answer 或
bitinn'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项目的 维基页面。