ChatGPT解决这个技术问题 Extra ChatGPT

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

如果一个网页以

<!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 版本中以大多数标准模式呈现。


L
L84

2021 年 11 月更新

由于这个答案现在已有 10 多年的历史,我的建议是完全不使用这个标签,除非您必须支持旧的旧版浏览器。

2015 年 10 月更新

这个答案是几年前发布的,现在的问题真的应该是您是否应该考虑在您的网站上使用 X-UA-Compatible 标记?以及 Microsoft 对其浏览器所做的更改(更多内容见下文) .

根据您支持的 Microsoft 浏览器,您可能不需要继续使用 X-UA-Compatible 标记。如果您需要支持 IE9 或 IE8,那么我建议使用标签。如果您只支持最新的浏览器(IE11 和/或 Edge),那么我会考虑完全删除这个标签。如果您使用 Twitter Bootstrap 并且需要消除验证警告,则此标签必须按其指定的顺序出现。以下附加信息:

X-UA-Compatible 元标记允许网络作者选择页面应呈现的 Internet Explorer 版本。 IE11 对这些模式进行了更改;请参阅下面的 IE11 注释。 Microsoft Edge 是替代 IE11 的浏览器,仅在某些情况下支持 X-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 以标准模式显示的内容。

模拟 IE9 模式告诉 Internet Explorer 使用 指令来确定如何呈现内容。标准模式指令以 IE9 模式显示,怪癖模式指令以 IE5 模式显示。与 IE9 模式不同,Emulate IE9 模式尊重 指令。

模拟 IE8 模式告诉 Internet Explorer 使用 指令来确定如何呈现内容。标准模式指令以 IE8 模式显示,怪癖模式指令以 IE5 模式显示。与 IE8 模式不同,Emulate IE8 模式尊重 指令。

模拟 IE7 模式告诉 Internet Explorer 使用 指令来确定如何呈现内容。标准模式指令以 Internet Explorer 7 标准模式显示,怪癖模式指令以 IE5 模式显示。与 IE7 模式不同,Emulate IE7 模式尊重 指令。对于许多网站来说,这是首选的兼容模式。

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

Microsoft

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

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

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

从 IE11 开始,文档模式已被弃用,不应再使用,除非是临时使用。确保更新依赖旧功能和文档模式的站点以反映现代标准。

如果您必须以特定文档模式为目标,以便您的站点在您对其进行改造以支持现代标准和功能时正常运行,请注意您正在使用一种过渡功能,该功能可能在未来的版本中不可用。

如果您当前使用与 x-ua 兼容的标头来定位旧文档模式,则您的网站可能无法反映 IE11 提供的最佳体验。

Microsoft Edge(替代 Windows 10 附带的 Internet Explorer)

有关“Edge”版本 IE 的 X-UA-Compatible 元标记的信息。 From Microsoft

引入“生活”边缘文档模式

正如我们在 2013 年 8 月宣布的那样,我们从 IE11 开始弃用文档模式。随着我们最新的平台更新,对旧文档模式的需求主要限于企业旧 Web 应用程序。随着新的架构更改,这些旧文档模式将与“实时”Edge 模式的更改隔离,这将有助于为依赖这些模式的客户保证更高级别的兼容性,并帮助我们更快地改进 Edge . IE 仍将支持 Intranet 站点、兼容性视图列表中的站点以及仅与企业模式一起使用时提供的文档模式。

公共 Internet 站点将使用新的 Edge 模式平台呈现(忽略 X-UA-Compatible)。我们的目标是让 Edge 成为从现在开始的“活”文档模式,并且不会再引入更多的文档模式。

随着 Microsoft Edge 的更改在大多数情况下不再支持文档模式,Microsoft 有一个 tool 来扫描您的站点以检查它是否包含与 Edge 不兼容的代码。

Chrome=1 IE 的信息

您还可以使用 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 框架的网站,让您可以访问最新的 HTML5 功能以及 Google Chrome 的性能和安全功能,而不会以任何方式中断您通常的浏览器使用。

安装 Google Chrome Frame 后,网络会变得更好,而无需您考虑。

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

有关 Chrome Frame 的更多信息,请参阅here

注意:Google Chrome Frame 仅适用于 IE6 through IE9,并已于 2014 年 2 月 25 日停用。更多信息请参见here。感谢@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 会继续抛出 warning。 linter 区分警告和错误,因此忽略此标记的严重性可能被认为是次要的。

有关 X-UA-Compatible 的详细信息,请参阅 Microsoft 的 Website Defining Document Compatibility

有关 IE 支持的更多信息,请参阅caniuse.com

有关 Twitter Bootstrap 要求的更多信息,请参阅 bootlint 项目 wiki page


如果我在标题中没有“X-UA-Compatible”,会发生什么?
基本上,当您拥有 X-UA-Compatible 时会发生什么.这可能是兼容模式,也可能是最新版本的 IE。无论 Microsoft/IE 认为什么都是最好的。说得通?
@TravisJ - 据我了解,可用的最高模式基本上意味着 IE 8 最多可以支持 IE8 模式,IE9 可以支持 IE9 模式等等。我为微软提供的每种模式添加了一些定义。
@AdrienBe - 我完全同意!到目前为止,IE 10 对我来说是最好的,但我鄙视任何其他版本。有一次,我有一个页面设置,其中包含大约 200-300 行 HTML 和大约 20 分钟的编码。为了让 IE 工作,我不得不添加另外 1,000 行代码(主要是 3rd 方 javascript)和 2-3 小时的工作!我真的很讨厌 IE =>
Google Chrome Frame 将于 2014 年 1 月停用:blog.chromium.org/2013/06/retiring-chrome-frame.html
C
Community

使用 content="IE=edge,chrome=1" 跳过其他 X-UA-Compatible 模式

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                   -------------------------- 

没有兼容性图标 IE9 地址栏没有显示“兼容性视图”按钮,页面也没有显示杂乱无章的菜单、图像和文本框。

特性 在 IE8 上启用 javascript::JSON.parse() 需要此元标记(即使存在 也是如此)

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

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

用法

在您的 HTML 中

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

IE=edge 表示 IE 应该使用其渲染引擎的最新(边缘)版本

chrome=1 表示如果安装了 IE 应该使用 Chrome 渲染引擎

或更好地配置您的网络服务器:
(另请参阅 RiaD's answer

Apache 由 pixeline BrowserMatch MSIE ie Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie 标题附加 Vary User-Agent

Stef Pause server { #... add_header X-UA-Compatible "IE=Edge,chrome=1"; 提出的 Nginx }

Lucas Riutzel 提出的清漆代理 sub vcl_deliver { if( resp.http.Content-Type ~ "text/html" ) { set resp.http.X-UA-Compatible = "IE=edge,chrome=1"; } }

IIS(从 v7 开始)

微软自 IE11 起推荐 Edge 模式

正如 Lynda 所注意到的(见评论),Compatibility changes in IE11 推荐 Edge 模式

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

但微软的立场并不清楚。另一个MSDN page did not recommend Edge mode

因为边缘模式强制所有页面都以标准模式打开,无论 Internet Explorer 的版本如何,您可能很想将其用于使用 Internet Explorer 查看的所有页面。不要这样做,因为仅从 Windows Internet Explorer 8 开始支持 X-UA-Compatible 标头。

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

如果您希望所有受支持的 Internet Explorer 版本都以标准模式打开您的页面,请使用 HTML5 文档类型声明 [...]

正如 Ricardo 所解释的(在下面的评论中),任何 DOCTYPE(HTML4、XHTML1...)都可用于触发标准模式,而不仅仅是 HTML5 的 DOCTYPE。重要的是在页面中始终有一个 DOCTYPE。

Clara Onager 甚至在旧版本的 Specifying legacy document modes 中注意到:

边缘模式仅用于测试目的;不要在生产环境中使用它。

令人困惑的是,Usman Y 认为 Clara Onager 在谈论:

[...] 示例仅用于说明目的;不要在生产环境中使用它。

嗯...在这个答案的其余部分,我会给出更多解释为什么使用 content="IE=edge,chrome=1" 是生产中的良好做法。

历史

多年来(2000 年至 2008 年),IE market share was more than 80%。并且 IE v6 被视为 事实上的 标准(2003 中 80% 到 97% 的市场份额,2004, 2005 and 2006 仅适用于 IE6,所有 IE 的市场份额更高版本)。

由于 IE6 不尊重 Web standards,开发人员不得不使用 IE6 测试他们的网站。这种情况对 Microsoft (MS) 来说非常好,因为 Web 开发人员必须购买 MS 产品(例如,IE 不能在不购买 Windows 的情况下使用),并且保持不合规更有利可图(即 Microsoft希望成为排除其他公司的标准)。

因此,许多网站仅符合 IE6,并且由于 IE 不符合 Web 标准,所有这些网站都不能在符合标准的浏览器上很好地呈现。更糟糕的是,many sites required only IE

然而,在这个时候,Mozilla 开始尽可能尊重所有 Web 标准的 Firefox 开发(其他浏览器被实现为像 IE6 那样呈现页面)。随着越来越多的 Web 开发人员希望使用新的 Web 标准功能,越来越多的网站受到 Firefox 的支持而不是 IE。

当 IE 市场份额下降时,MS 意识到保持标准不兼容并不是一个好主意。因此,MS 开始发布新的 IE 版本(IE8/IE9/IE10),越来越尊重 web 标准。

网络不兼容问题

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

2016年还在用IE6

如今,IE6 仍在使用(0.7% in 2016)(2014 年 1 月为 4.5%),一些互联网网站仍然只兼容 IE6。一些 Intranet 网站/应用程序使用 IE6 进行测试。一些 Intranet 网站只能在 IE6 上 100% 运行。这些公司/部门更愿意推迟迁移成本:其他优先事项,没有人知道网站/应用程序是如何实施的,旧网站/应用程序的所有者破产了……

2013 年中国占 IE6 使用量的 50%,但它可能会在未来几年发生变化,如 Chinese Linux distribution is being broadcast

对您的网络技能充满信心

如果您(尝试)尊重网络标准,您可以简单地始终使用 http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"。为了保持与旧浏览器的兼容性,只需避免使用最新的 Web 功能:使用您想要支持的最旧浏览器支持的子集。或者,如果您想更进一步,您可以采用 Graceful degradationProgressive enhancementUnobtrusive JavaScript 等概念。 (您可能也会很高兴阅读 What should a web developer consider?。)

不要关心最好的 IE 版本渲染:这不是你的工作,因为浏览器必须符合 Web 标准。如果您的网站符合标准并使用最新的功能,则浏览器必须与您的网站兼容。

此外,由于有许多活动可以杀死 IE6(IE6 no moreMS campaign),现在您可以避免浪费时间进行 IE 测试!

个人IE6体验

在 2009-2012 年,我在一家使用 IE6 作为官方允许的单一浏览器的公司工作。我只需要为 IE6 实现一个 Intranet 网站。我决定尊重网络标准,但使用支持 IE6 的子集(HTML/CSS/JS)。

这很困难,但是当公司切换到 IE8 时,网站仍然呈现良好,因为我使用了 Firefox 和 firebug 来检查网络标准的兼容性;)


'边缘模式仅用于测试目的;不要在生产环境中使用它。请参阅msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
请@ClaraOnager 花一些时间来解释我的回答中有什么问题(从您的角度来看)。即使 MS 不建议在生产环境中使用 Edge 模式,也有充分的理由在生产环境中使用它。从技术上阐明我们的最佳实践非常重要。我喜欢分享我的知识和经验。我也希望你。我们可以一起进步;)干杯
嗨@Ricardo,我同意你的看法。 Microsoft 表示 “如果您希望所有受支持的 Internet Explorer 版本都以标准模式打开您的页面,请使用 HTML5 [...]”Understanding legacy document modes 部分(请参阅提示< /b>)。也许我的解释不清楚……也许我误解了什么……我改变了我的文字……你觉得我的改变怎么样?你可以吗?您建议在我的回答中更改/改进什么?感谢您的反馈意见。干杯;-)
@ClaraOnager ...在您的第一个答案中,您在参考页面中指向不正确。MS 说不要在生产环境中使用: 不是其他边缘的东西。
关于生产环境中使用的边缘模式。来自微软:Starting with IE11, edge mode is the preferred document mode; it represents the highest support for modern standards available to the browser.
a
andrewdotn

不同之处在于,如果您只指定 DOCTYPE,则 IE 的 Compatibility View Settings 优先。默认情况下,这些设置强制所有 Intranet 站点进入兼容性视图,而不管 DOCTYPE。还有一个复选框,用于对所有网站使用兼容性视图,无论 DOCTYPE 是什么。

https://i.stack.imgur.com/0rfvD.png

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

内联网页面

当计算机管理员选择“在兼容性视图中显示所有网站”作为默认设置时的外部网页——想想大公司、政府、大学

当您无意中出现在 Microsoft 兼容性视图列表中时

用户手动将您的网站添加到兼容性视图设置中的列表的情况

DOCTYPE 单独无法做到这一点;在这些情况下,您最终会进入其中一种兼容性视图模式,而不管 DOCTYPE

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

此答案基于检查 IE8IE9IE10 中决定文档模式的完整规则。请注意,查看 DOCTYPE 是决定文档模式的最后一个后备选项。


在内网场景下,IE10默认以兼容模式呈现。请参阅 stackoverflow.com/questions/13284083/...。 Internet 默认情况下不需要此标记,但在使用 myintenralserver/myapp 时需要(默认)。我想添加此评论,因为 Internet 与 Intranet 的区别仅从屏幕截图中的文本中清晰可见,而不是在页面上任何答案的文本中。
你是对的,我应该更清楚这一点。我重写了帖子;让我知道是否还有其他需要解决的问题。谢谢!
谢谢!这个答案比关于 Intranet 站点的其他答案要清晰得多。其他答案涉及有关原因和方式的技术细节。我讨厌 MS IE。写得也很好:一段清楚地说明了为什么我们需要元标记。布拉沃
我希望我能对这个答案投票一百次。救生屏幕就在那里。当我打字时血压降低...
厉害厉害厉害厉害!非常感谢您的回答。
G
George Filippakos

使用它来强制 IE 隐藏地址栏中那个烦人的浏览器兼容性按钮:

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

'边缘模式仅用于测试目的;不要在生产环境中使用它。请参阅msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
为了更好地衡量,我将 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">chrome=1 指令一起使用,因此它会提示 IE6、7、8 用户安装/使用 Chrome Frame。甚至 HTML5 Boilerplate 也使用它。
@ClaraOnager 虽然微软这么说,但这并不一定意味着他们是对的。自从 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 出现以来,我就一直使用它,完全没有问题。实际上,通过让用户的 IE 使用其最新引擎来呈现我们构建的页面,我已经为我的团队和我自己节省了数百个麻烦。与你和微软相反,我建议大家每次都使用上述元标记。只要 IE 还在,我们就会“被迫”使用这个元标记:p
IE11 改变了这一点。这个版本在遵循官方标准的浏览器世界中取得了巨大的进步。它甚至没有将自己标识为 Internet Explorer!现在它说它是“Netscape”,并且在浏览器信息中不包含任何内容以泄露其真实身份。如果您从这个版本开始在 IE 浏览器中仍然遇到任何异常,您需要通过设置 <meta http-equiv="X-UA-Compatible" content="IE=10"> 将其强制进入 IE10。然后它将自己报告为 Microsoft Internet Explorer。
面临同样的相关问题,如果有人可以帮助我:stackoverflow.com/questions/22013880/…
E
EMurph78

由于我无法对标记的答案添加评论,因此我将在此处发布。

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

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

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


除了针对 <=IE9 的 HTML 之外,不应使用条件注释。 (即使写了这个答案也是如此)
a
akjoshi

我认为微软的这张图表解释了一切。为了告诉 IE 如何呈现内容,!DOCTYPE 必须使用 X-UA-Compatible 元标记。 !DOCTYPE 本身对更改 IE 文档模式没有影响。

https://i.stack.imgur.com/teQdv.png

http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png


这是一个包含 IE9 的更新版本。天哪... ie.microsoft.com/testdrive/ieblog/2010/Jun/…
而这个包括IE10:msdn.microsoft.com/en-us/library/ff406036%28v=vs.85%29.aspx不同的章节有自己独立的流程图......
你误读了那个流程图。在没有 X-UA-Compatible 的情况下,浏览器将寻找 。如果找到一个,它将以标准模式(又名“EmulateIE8”)呈现。如果没有,它会恢复到“怪癖模式”。
感谢您将图像上传到 Stackoverflow。与微软的原始链接都已失效。
B
Bipon Biswas

一句话就说 指导 Internet Explorer 使用其最新的渲染引擎

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

R
RiaD

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

这样做并且永不回头(第一个例子是 apache,第二个例子是 nginx)

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

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

@HueiTan - 我认为海报是说,当您尝试使用 W3 Validator 验证页面时,它会抛出错误:Bad value X-UA-Compatible for attribute http-equiv on element meta. - 这并不意味着它不起作用。它只是无效的代码。
C
Community
<meta http-equiv="X-UA-Compatible" content="IE=Edge">

要使这条线按预期工作,请确保:

它是 之后的第一个元素 在元标记之前没有使用条件注释,例如在 元素上

否则一些 IE 版本会直接忽略它。

更新

这两条规则被简化了,但它们很容易记住和验证。尽管 MSDN 文档声明您可以将标题和其他元标记放在此之前,但我不建议这样做。

How make it work with conditional comments.

Interesting article about the order of elements in the head.(blogs.msdn.com,适用于 IE)

参考

MSDN documentation

X-UA-Compatible [...] 必须出现在网页的标题(HEAD 部分)中,位于除标题元素和其他元元素之外的所有其他元素之前。


F
Freakyuser

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


“与服务器相同的网络”的另一个词是 Intranet ...所以基本上 IE10 默认情况下对于所有 Intranet 站点都被破坏。请参阅@AndrewNeitsch 答案中的屏幕截图。
C
Community

这是 LITERALLY 1 google query away,但这里是:

http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx

了解旧文档模式 使用以下值以边缘模式显示网页,这是 Internet Explorer 支持的最高标准模式,从 Internet Explorer 6 到 IE11。

搜索结果中还有:

有什么作用?


S
Shawn Spencer

2.1.3.5 X-UA-Compatibility 元标记和 HTTP 响应头

此功能不会在任何版本的 Microsoft Edge 中实现。

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />

请参阅https://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspx

是的,我知道我迟到了,但我只是遇到了一些问题和讨论,最后我的老板让我从我一直在处理的所有文档中删除 X-UA-Compatible 标记。

如果此信息已过时或不再相关,请更正我。