2021 年 11 月更新
由于这个答案现在已有 10 多年的历史,我的建议是完全不使用这个标签,除非您必须支持旧的旧版浏览器。
2015 年 10 月更新
这个答案是几年前发布的,现在问题真的应该是您是否应该考虑X-UA-Compatible
在您的网站上使用该标签?微软对其浏览器所做的更改(更多内容见下文)。
根据您支持的 Microsoft 浏览器,您可能不需要继续使用该X-UA-Compatible
标签。如果您需要支持 IE9 或 IE8,那么我建议使用标签。如果您只支持最新的浏览器(IE11 和/或 Edge),那么我会考虑完全删除这个标签。如果您使用 Twitter Bootstrap 并且需要消除验证警告,则此标签必须按其指定的顺序出现。以下附加信息:
元标记允许 Web作者X-UA-Compatible
选择页面应呈现为哪个版本的 Internet Explorer。IE11 对这些模式进行了更改;请参阅下面的 IE11 注释。取代 IE11 的浏览器Microsoft EdgeX-UA-Compatible
仅在某些情况下支持元标记。请参阅下面的 Microsoft Edge 说明。
根据微软的说法,在使用X-UA-Compatible
标签时,它应该在您的文档中尽可能高head
:
如果您使用 X-UA-Compatible META 标签,您希望将其放置在尽可能靠近页面 HEAD 顶部的位置。Internet Explorer 开始使用最新版本解释标记。当 Internet Explorer 遇到 X-UA-Compatible META 标签时,它会使用指定版本的引擎重新开始。这是一个性能损失,因为浏览器必须停止并重新开始分析内容。
以下是您的选择:
- “IE=边缘”
- “IE=11”
- “IE=EmulateIE11”
- “IE=10”
- “IE=EmulateIE10”
- “IE=9”
- "IE=仿真IE9
- “IE=8”
- “IE=EmulateIE8”
- “IE=7”
- “IE=EmulateIE7”
- “IE=5”
为了尝试理解每个含义,以下是 Microsoft 提供的定义:
Internet Explorer 支持多种文档兼容性模式,这些模式可启用不同的功能并影响内容的显示方式:
- 边缘模式告诉 Internet Explorer 以可用的最高模式显示内容。对于 Internet Explorer 9,这相当于 IE9 模式。如果 Internet Explorer 的未来版本支持更高的兼容性模式,则设置为边缘模式的页面将以该版本支持的最高模式显示。使用 Internet Explorer 9 查看时,这些相同的页面仍会以 IE9 模式显示。Internet Explorer 支持多种文档兼容性模式,这些模式可启用不同的功能并可能影响内容的显示方式:
- IE11 模式为已建立和新兴的行业标准提供最高支持,包括 HTML5、CSS3 等。
- IE10 模式为已建立和新兴的行业标准提供最高支持,包括 HTML5、CSS3 等。
- IE9 模式为已建立和新兴的行业标准提供最高支持,包括 HTML5(工作草案)、W3C 级联样式表第 3 级规范(工作草案)、可缩放矢量图形 (SVG) 1.0 规范等。[编者注:IE 9不支持 CSS3 动画]。
- IE8 模式支持许多已建立的标准,包括 W3C Cascading Style Sheets Level 2.1 Specification 和 W3C Selectors API;它还为 W3C 级联样式表第 3 级规范(工作草案)和其他新兴标准提供有限的支持。
- IE7 模式呈现内容,就好像它是由 Internet Explorer 7 在标准模式下显示的一样,无论页面是否包含 <!DOCTYPE> 指令。
- 模拟 IE9 模式告诉 Internet Explorer 使用 <!DOCTYPE> 指令来确定如何呈现内容。标准模式指令以 IE9 模式显示,怪癖模式指令以 IE5 模式显示。与 IE9 模式不同,Emulate IE9 模式尊重 <!DOCTYPE> 指令。
- 模拟 IE8 模式告诉 Internet Explorer 使用 <!DOCTYPE> 指令来确定如何呈现内容。标准模式指令以 IE8 模式显示,怪癖模式指令以 IE5 模式显示。与 IE8 模式不同,Emulate IE8 模式尊重 <!DOCTYPE> 指令。
- 模拟 IE7 模式告诉 Internet Explorer 使用 <!DOCTYPE> 指令来确定如何呈现内容。标准模式指令以 Internet Explorer 7 标准模式显示,怪癖模式指令以 IE5 模式显示。与 IE7 模式不同,Emulate IE7 模式尊重 <!DOCTYPE> 指令。对于许多网站来说,这是首选的兼容模式。
- IE5 模式呈现内容,就好像它是由 Internet Explorer 7 以 quirks 模式显示的一样,这与 Microsoft Internet Explorer 5 中显示内容的方式非常相似。
IE10 注意:从 IE10 开始,怪癖模式的行为与早期版本的浏览器不同。在 IE9 及更早的版本中,quirks 模式将网页限制为 IE5.5 支持的功能。在 IE10 中,quirks 模式符合 HTML5 规范中规定的差异。
就个人而言,我总是选择http-equiv="X-UA-Compatible" content="IE=edge"
元标记,因为旧版本有很多错误,我不希望 IE 决定进入“兼容模式”并将我的网站显示为 IE7 与 IE8 或 9。我总是更喜欢最新版本的IE。
IE11
来自微软:
从 IE11 开始,边缘模式是首选的文档模式;它代表了对浏览器可用的现代标准的最高支持。
使用 HTML5 文档类型声明来启用边缘模式:
<!doctype html>
Edge 模式是在 Internet Explorer 8 中引入的,并且在每个后续版本中都可用。请注意,边缘模式支持的功能仅限于呈现内容的特定版本的浏览器支持的功能。
从 IE11 开始,文档模式已被弃用,不应再使用,除非是临时使用。确保更新依赖旧功能和文档模式的站点以反映现代标准。
如果您必须以特定文档模式为目标,以便您的站点在您对其进行改造以支持现代标准和功能时正常运行,请注意您正在使用一种过渡功能,该功能可能在未来的版本中不可用。
如果您当前使用与 x-ua 兼容的标头来定位旧文档模式,则您的网站可能无法反映 IE11 提供的最佳体验。
Microsoft Edge(替代与 Windows 10 捆绑的 Internet Explorer)
X-UA-Compatible
有关“Edge”版本 IE 的元标记的信息。来自微软:
引入“生活”边缘文档模式
正如我们在 2013 年 8 月宣布的那样,我们从 IE11 开始弃用文档模式。随着我们最新的平台更新,对旧文档模式的需求主要限于企业旧 Web 应用程序。随着新的架构更改,这些旧文档模式将与“实时”Edge 模式中的更改隔离,这将有助于为依赖这些模式的客户保证更高级别的兼容性,并帮助我们更快地改进 Edge . IE 仍将支持 Intranet 站点、兼容性视图列表中的站点以及仅与企业模式一起使用时提供的文档模式。
公共 Internet 站点将使用新的 Edge 模式平台呈现(忽略 X-UA-Compatible)。我们的目标是让 Edge 成为从现在开始的“活”文档模式,并且不会再引入更多的文档模式。
随着 Microsoft Edge 的更改在大多数情况下不再支持文档模式,Microsoft 有一个工具可以扫描您的站点以检查它是否包含与 Edge 不兼容的代码。
Chrome=1 IE 的信息
您还chrome=1
可以使用或与上述选项之一一起使用,例如:<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
. chrome=1
适用于谷歌的 Chrome 框架,定义为:
Google Chrome Frame 是一个开源浏览器插件。安装了该插件的用户在浏览器中打开页面时可以访问 Google Chrome 的开放网络技术和快速的 JavaScript 引擎。
Google Chrome Frame 无缝增强了您在 Internet Explorer 中的浏览体验。它使用 Google Chrome 的渲染技术显示支持 Google Chrome 框架的网站,让您可以访问最新的 HTML5 功能以及 Google Chrome 的性能和安全功能,而不会以任何方式中断您通常的浏览器使用。
安装 Google Chrome Frame 后,网络会变得更好,而无需您考虑。
但是要使该插件正常工作,您必须chrome=1
在X-UA-Compatible
元标记中使用。
可以在此处找到有关 Chrome Frame 的更多信息。
注意: Google Chrome Frame 仅适用于IE6 到 IE9,并于 2014 年 2 月 25 日停用。更多信息可以在这里找到。感谢@mck 提供链接。
验证:
HTML5:
只有在使用<meta http-equiv="X-UA-Compatible" content="IE=Edge">
. 对于其他值,它会抛出错误: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 标头在服务器级别执行此操作。作为注释,微软说,有关如何设置 HTTP 标头的更多详细信息,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 的答案或bitinn 的答案。
XHTML
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
只要标签正确关闭(即/>
vs >
),使用时验证就没有问题。
Twitter Bootstrap(V3 及以下)
至少从 2014 年开始,Bootstrap 团队就强烈推荐此标签,并且当标签被忽略时,由twbs团队编写的 linter Bootlint 继续抛出警告。linter 区分警告和错误,因此忽略此标记的严重性可能被认为是次要的。
有关详细信息,X-UA-Compatible
请参阅 Microsoft 的网站定义文档兼容性。
有关 IE 支持的更多信息,请参阅caniuse.com。
有关 Twitter Bootstrap 要求的更多信息,请参阅 bootlint 项目wiki 页面。