如果一个网页的开头是 "A",那有什么区别呢?
<!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版本中以最标准模式呈现。
2015年10月更新
X-UA-Compatible
标签?"随着微软对其浏览器的改变(下面会有更多介绍)。
根据你所支持的微软浏览器,你可能不需要继续使用 "X-UA-Compatible "标签。如果你需要支持IE9或IE8,那么我建议使用该标签。如果你只支持最新的浏览器(IE11和/或Edge),那么我将考虑完全放弃这个标签。如果你使用Twitter Bootstrap,并且需要消除验证警告,那么这个标签必须以其指定的顺序出现。下面是补充信息。X-UA-Compatible
元标签允许网页制作者选择网页应该以何种版本的Internet Explorer呈现。IE11对这些模式进行了修改,见下面的IE11说明。[Microsoft Edge][1],取代IE11的浏览器,只在某些情况下尊重X-UA-Compatible
元标签。见下面的Microsoft Edge说明。
根据微软的说法,当使用X-UA-Compatible
标签时,它应该在你的文档`头'中尽可能的高。
如果你使用X-UA-Compatible META标签,你要把它放在尽可能靠近页面HEAD的顶部。Internet Explorer开始使用最新版本解释标记。当IE浏览器遇到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支持一些文档兼容模式,这些模式可以启用不同的功能,并能影响内容的显示方式。 边缘模式告诉Internet Explorer以现有的最高模式显示内容。对于Internet Explorer 9,这相当于IE9模式。如果未来发布的IE浏览器支持更高的兼容模式,设置为边缘模式的页面将以该版本支持的最高模式显示。当用Internet Explorer 9查看时,这些相同的页面仍将以IE9模式出现。 Internet Explorer支持许多文档兼容模式,这些模式可以启用不同的功能,并能影响内容的显示方式。
- IE11模式为既定和新兴的行业标准提供了最高的支持,包括HTML5、CSS3和其他标准。 IE10模式为既定的和新兴的行业标准提供最高的支持,包括HTML5、CSS3和其他标准。
- IE9模式为既定的和新兴的行业标准提供了最高的支持,包括HTML5(工作草案)、W3C层叠样式表三级规范(工作草案)、可扩展矢量图(SVG)1.0规范和其他。[编辑注:IE 9 不支持CSS3动画]。
- IE8模式支持许多既定标准,包括W3C层叠样式表2.1级规范和W3C选择器API;它还为W3C层叠样式表3级规范(工作草案)和其他新兴标准提供有限的支持。
- IE7模式下,无论页面是否包含<!DOCTYPE>指令,都会像Internet Explorer 7在标准模式下显示的内容一样进行渲染。
- 模仿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模式不同,Emulate IE7模式尊重<!DOCTYPE>指令。对于许多网站来说,这是首选的兼容模式。
IE5模式渲染的内容就像Internet Explorer 7在古怪模式下显示的一样,这与微软Internet Explorer 5中的内容显示方式非常相似。 IE10注意:从IE10开始,怪癖模式的行为与早期版本的浏览器不同。在IE9和早期版本中,怪癖模式将网页限制在IE5.5所支持的功能范围内。在IE10中,怪癖模式符合HTML5规范中规定的差异。 就个人而言,我总是选择
http-equiv="X-UA-Compatible"content="IE=edge"
元标签,因为旧版本有很多bug,我不希望IE决定进入"兼容模式",将我的网站显示为IE7与IE8或9。我总是喜欢最新版本的IE。 *IE11*** 来自微软。 从IE11开始,边缘模式是首选的文档模式;它代表了浏览器对现代标准的最高支持。 使用HTML5文档类型声明来启用边缘模式。<!doctype html>
边缘模式是在Internet Explorer 8中引入的,并在随后的每个版本中都可用。请注意,边缘模式所支持的功能仅限于渲染内容的特定版本的浏览器所支持的功能。 从IE11开始,文档模式已被废弃,不应再使用,除非是临时使用。请确保更新那些依赖传统功能和文档模式的网站,以反映现代标准。 如果你必须以特定的文档模式为目标,以便你的网站在重新制作以支持现代标准和功能时能够正常运行,请注意你正在使用一个过渡性的功能,一个在未来版本中可能无法使用的功能。 如果你目前使用x-ua-compatible标头来定位一个传统的文档模式,那么你的网站有可能无法反映出IE11的最佳体验。 Microsoft Edge(Windows 10捆绑的Internet Explorer的替代品) 关于IE的"Edge"版本的X-UA-Compatible
元标签的信息。来自微软: 介绍 "活的 "Edge文档模式。 正如我们在2013年8月宣布的那样,我们将从IE11开始废除文档模式。随着我们最新的平台更新,对遗留文档模式的需求主要限于企业遗留网络应用。通过新的架构变化,这些遗留的文档模式将与 "活着的 "Edge模式的变化隔离开来,这将有助于保证依赖这些模式的客户获得更高的兼容性,并帮助我们更快地改进Edge。IE仍将尊重由内部网网站、"兼容视图 "列表上的网站以及仅与企业模式一起使用时提供的文档模式。 公共互联网网站将用新的Edge模式平台渲染(忽略X-UA-Compatible)。我们的目标是,从现在开始,Edge是"活的"文档模式,今后将不再引入其他文档模式。 随着微软Edge的变化,在大多数情况下不再支持文档模式,微软有一个工具来扫描你的网站,以检查并查看它是否有与Edge不兼容的代码。 Chrome=1信息用于IE。 还有chrome=1
,你可以使用或与上述选项之一一起使用,如。<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
。chrome=1
是指Google'的Chrome Frame,其定义为:。 Google Chrome Frame是一个开源的浏览器插件。安装了该插件的用户在浏览器中打开页面时,可以使用谷歌浏览器的开放网络技术和快速的JavaScript引擎。 Google Chrome Frame可以无缝地增强您在Internet Explorer中的浏览体验。它使用谷歌浏览器的渲染技术显示支持谷歌浏览器框架的网站,使您能够使用最新的HTML5功能以及谷歌浏览器的性能和安全功能,而不会以任何方式中断您的常规浏览器使用。 安装了谷歌浏览器框架后,网络就会变得更好,而不需要你去想它。 但要使该插件发挥作用,你必须在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进行验证。对于其他值,它将抛出一个错误:一个带有http-equiv属性的元元素,其值是X-UA-Compatible,必须有一个值为IE=edge的内容属性。
换句话说,如果你有IE=edge,chrome=1
,它将无法验证。我完全无视这个错误,因为现代浏览器根本无视这行代码。 如果你必须有完全有效的代码,那么可以考虑在服务器层面通过设置HTTP头来做到这一点。作为说明,微软说:"如果这两个指令都被发送(元和HTTP),开发者的偏好(元元素)优先于网络服务器的设置(HTTP头)。"关于如何设置HTTP头的更多细节,请参见olebre'的回答或bitinn'的回答。 XHTML 在使用<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
时,只要标签被正确关闭(即/>
与>
),就不存在验证的问题。 Twitter Bootstrap** 至少从2014年开始,Bootstrap团队就强烈建议使用这个标签,而Bootlint,即twbs团队编写的linter,在该标签被省略时继续抛出警告。linter区分了警告和错误,因此,省略这个标签的严重性可能被认为是轻微的。关于 "X-UA-Compatible "的更多信息,请参见Microsoft'的网站定义文档兼容性。 关于IE支持的更多信息,请看caniuse.com。 关于Twitter Bootstrap要求的更多信息,见bootlint项目wiki页面。
使用content=
"IE=edge,chrome=1"
跳过其他X-UA-Compatible
模式
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
--------------------------
javascript::JSON.parse()
<!DOCTYPE html>
存在的情况下)
正确性 在你的HTML中
IE=edge
表示IE应该使用最新(边缘)版本的渲染引擎chrome=1
表示IE应该使用Chrome渲染引擎,如果安装了的话。
或者在你的网络服务器的配置中更好: add_header X-UA-Compatible "IE=Edge,chrome=1"。
}
但微软的立场并不明确。另一个[MSDN页面没有推荐Edge模式][noEdge]。
因为Edge模式迫使所有的网页都以标准模式打开。 不管Internet Explorer的版本如何。 你可能会想对所有用Internet Explorer浏览的页面使用这种模式。 不要这样做,因为 "X-UA-Compatible "标头只支持从Windows Internet Explorer开始。 Windows Internet Explorer 8。 相反,微软建议使用
<meta http-equiv="X-UA-Compatible" content="IE=7、9、10" > **嗯...。在这个答案的其余部分,我给出了更多的解释,为什么在生产中使用`content="IE=edge,chrome=1"`是一个好的做法。** --------------------------------- 历史 ------- 多年来(2000年至2008年),[IE的市场份额超过了80%][IEMS]。而IE **v6**被认为是*事实上的标准(在[2003年][OneStat]中,80%至97%的市场份额,[2004年、2005年和2006年][IE6]仅指IE6,所有IE版本的市场份额更多)。 由于IE6不尊重[网络标准](http://en.wikipedia.org/wiki/Web_standards),开发者***不得不使用IE6测试他们的网站。这种情况对微软(MS)来说是很好的,因为网络开发者必须***购买MS的产品(例如,不购买Windows就不能使用IE),而且保持不符合标准更有利可图(也就是说,微软想成为***的标准,排除其他公司)。 因此,许多网站只符合IE6标准,而由于IE不符合网络标准,所有这些网站在符合标准的浏览器上都不能很好地呈现。更糟糕的是,[许多网站只需要IE](http://hintsforums.macworld.com/showthread.php?t=111479)。 然而,在这个时候,Mozilla开始了Firefox的开发,并尽可能地尊重所有的网络标准(其他浏览器都是按照IE6的方式来渲染网页)。随着越来越多的网络开发者希望使用新的网络标准功能,越来越多的网站得到了火狐浏览器的支持而不是IE。 当IE的市场占有率下降时,MS意识到保持标准不兼容不是一个好主意。因此,MS开始发布新的IE版本(IE8/IE9/IE10),越来越尊重网络标准。 --------------------------------- 网络不兼容的问题 --------------------------- 但问题是所有为IE6设计的网站:微软不能发布与这些旧的IE6设计的网站不兼容的新IE版本。MS要求开发者在他们的网页中添加额外的数据(`X-UA-Compatible`),而不是推断一个网站已经设计的IE版本。 在2016年,IE6仍然被使用 ------------------------- 现在,IE6仍在使用[(2016年为0.7%)][IE62014](2014年1月为4.5%),一些互联网网站仍只兼容IE6。一些内网网站/应用程序使用IE6进行测试。一些内网网站只在IE6上实现了100%的功能。这些公司/部门宁愿推迟迁移成本:其他优先事项,没有人再知道网站/应用程序是如何实现的,传统网站/应用程序的所有者破产了...... 中国占[2013年IE6使用量的50%](www.ie6countdown.com/),但随着[中国Linux发行版的播出],未来几年可能会发生变化(http://www.canonical.com/content/canonical-and-chinese-standards-body-announce-ubuntu-collaboration)。 对自己的网络技能要有信心 --------------------------------- 如果你(试图)尊重网络标准,你可以简单地总是使用`http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"`。为了保持与旧浏览器的兼容性,只要避免使用最新的网络功能:使用你想支持的最旧的浏览器所支持的子集。或者,如果你想更进一步,你可以采用[优雅降级]、[渐进增强]和[非侵入性JavaScript]等概念。(你可能也会高兴地阅读[网络开发者应该考虑什么?])。 不要关心最好的IE版本的渲染:这不是你的工作,因为浏览器必须符合网络标准。如果你的网站符合标准并使用适度的最新功能,因此**浏览器必须符合你的网站**。 此外,由于现在有很多活动要消灭IE6([IE6 no more](http://www.ie6nomore.com/), [MS campaign](http://www.webmonkey.com/2011/03/microsoft-kicks-off-campaign-to-kill-internet-explorer-6/)),现在你可以避免在IE测试上浪费时间了 个人的IE6经验 ----------------------- 在2009-2012年,我在一家公司工作,该公司使用IE6作为*官方允许的单一浏览器。我不得不实施一个只适用于IE6的内网网站。我决定尊重网络标准,但使用支持IE6的子集(HTML/CSS/JS)。 这很难,但当公司改用IE8时,网站仍然呈现得很好,因为我用Firefox和[firebug][FB]来检查网页标准的兼容性;) [Clara]: https://stackoverflow.com/users/1400368 [noEdge]: http://msdn.microsoft.com/library/jj676915.aspx#DCModes [MSICON]: http://windows.microsoft.com/en-US/internet-explorer/products/ie-9/features/compatibility-view [IEMS]: http://en.wikipedia.org/wiki/File:Internet-explorer-usage-data.svg [IE6]: http://en.wikipedia.org/wiki/Internet_Explorer#Desktop_Market_share_by_year_and_version [OneStat]: http://www.onestat.com/html/aboutus_pressbox23.html [IE62014]: http://marketshare.hitslink.com/report.aspx?qprid=3&qpaf=&qpcustom=Microsoft+Internet+Explorer+6.0&qpcustomb=0 [FB]: http://en.wikipedia.org/wiki/Firebug_%28software%29 [优雅降级]: http://www.w3.org/wiki/Graceful_degredation_versus_progressive_enhancement [渐进式增强]: http://en.wikipedia.org/wiki/Progressive_enhancement [不显眼的JavaScript]: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript [网站开发人员应该考虑什么?]: https://softwareengineering.stackexchange.com/questions/46716<!DOCTYPE html>
。 如果你希望所有支持的Internet Explorer版本都能以标准模式打开 你的网页在标准模式下,使用HTML5文档类型声明[...] 。 正如Ricardo所解释的那样(在下面的评论中),任何DOCTYPE(HTML4、XHTML1...)都可以用来触发标准模式,而不仅仅是HTML5'的DOCTYPE。重要的是,在页面中始终要有一个DOCTYPE。 Clara Onager甚至在旧版本的指定传统文档模式中注意到。 边缘模式仅用于测试目的。 不要在生产环境中使用它。 它是如此令人困惑,以至于Usman Y认为Clara Onager说的是。 [......]的例子只是为了说明问题而提供的。 不要在生产环境中使用它。