<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
meta标题,因为我只是希望它在所有IE版本中以大多数标准模式呈现。
2015年10月更新
这个答案是几年前发布的,现在的问题真的应该是你应该考虑在你的网站上使用X-UA-Compatible
标签吗? 随着微软对其浏览器的改变(更多关于下面的内容)。
根据您所支持的Microsoft浏览器,您可能不需要继续使用X-UA-Compatible
标签。 如果你需要支持IE 9或IE 8,那么我会build议使用标签。 如果你只支持最新的浏览器(IE 11和/或Edge),那么我会考虑完全放弃这个标签。 如果您使用Twitter Bootstrap并且需要消除validation警告,则此标记必须按照指定的顺序出现。 以下附加信息:
X-UA兼容元标记允许networking作者select将页面呈现为什么版本的Internet Explorer。 IE11已经改变了这些模式; 请参阅下面的IE11说明。 在IE11之后发布的浏览器Microsoft Edge ,在某些情况下只会遵循X-UA兼容元标记。 请参阅下面的Microsoft Edge注释。
根据微软的说法,当使用X-UA-Compatible标签时,它应该尽可能地高于文档head
:
如果您使用的是X-UA兼容的META标签,则要尽可能靠近页面顶部的顶部。 Internet Explorer将使用最新版本开始解释标记。 当Internet Explorer遇到与X-UA兼容的META标记时,它将使用指定版本的引擎重新开始。 这是性能问题,因为浏览器必须停止并重新开始分析内容。
这里是你的select:
- “IE =边缘”
- “IE = 11”
- “IE = EmulateIE11”
- “IE = 10”
- “IE = EmulateIE10”
- “IE = 9”
- “IE = EmulateIE9
- “IE = 8”
- “IE = EmulateIE8”
- “IE = 7”
- “IE = EmulateIE7”
- “IE = 5”
为了试图理解每个方法的含义,下面是Microsoft提供的定义:
Internet Explorer支持许多文档兼容性模式,以启用不同的function,并可能影响内容的显示方式:
边缘模式告诉Internet Explorer以可用的最高模式显示内容。 使用Internet Explorer 9,这相当于IE9模式。 如果未来版本的Internet Explorer支持更高的兼容模式,则设置为边缘模式的页面将以该版本支持的最高模式显示。 使用Internet Explorer 9查看时,这些相同的页面仍将以IE9模式显示。Internet Explorer支持许多文档兼容模式,这些模式可启用不同的function,并可能影响内容的显示方式:
IE11模式为build立和新兴的行业标准提供了最高的支持,包括HTML5,CSS3等。
IE10模式为build立和新兴行业标准提供了最高的支持,包括HTML5,CSS3等。
IE9模式为build立和新兴行业标准(包括HTML5(工作草案),W3C级联样式表级别3规范(工作草案),可缩放vectorgraphics(SVG)1.0规范等)提供了最高的支持。 [编者注:IE 9 不支持CSS3animation]。
IE8模式支持许多既定的标准,包括W3C级联样式表级2.1规范和W3Cselect器API; 它也为W3C级联样式表3级规范(工作草案)和其他新兴标准提供了有限的支持。
IE7模式呈现内容,就像Internet Explorer 7以标准模式显示内容一样,无论页面是否包含指令。
模拟IE9模式告诉Internet Explorer使用该指令来确定如何呈现内容。 标准模式指令在IE9模式下显示,怪异模式指令在IE5模式下显示。 与IE9模式不同,仿真IE9模式遵守指令。
模拟IE8模式告诉Internet Explorer使用该指令来确定如何呈现内容。 标准模式指令在IE8模式下显示,怪异模式指令在IE5模式下显示。 不像IE8模式,仿真IE8模式尊重指令。
模拟IE7模式告诉Internet Explorer使用指令来确定如何呈现内容。 标准模式指令在Internet Explorer 7标准模式下显示,怪异模式指令在IE5模式下显示。 不像IE7模式,仿真IE7模式尊重指令。 对于许多网站来说,这是首选的兼容模式。
IE5模式呈现的内容就像在Internet Explorer 7中以怪癖模式显示一样,这与内容在Microsoft Internet Explorer 5中显示的方式非常相似。
IE 10注意:从Internet Explorer 10开始,怪异模式的行为与早期版本的浏览器不同。 在Windows Internet Explorer 9及更早版本中,特殊模式将网页限制为Microsoft Internet Explorer 5.5支持的function。 在Internet Explorer 10中,怪异模式符合HTML5规范中指定的差异。
就个人而言,我总是selecthttp-equiv="X-UA-Compatible" content="IE=edge"
元标记,因为旧版本有很多错误,我不希望IE决定进入“兼容模式”并显示我的网站为IE7与IE8或9.我总是喜欢最新版本的IE浏览器。
IE 11
来自微软:
从IE11开始,边缘模式是首选的文档模式; 它代表了对浏览器可用的现代标准的最高支持。
使用HTML5文档types声明来启用边缘模式:
<!doctype html>
边缘模式是在Internet Explorer 8中引入的,并且在以后的每个版本中都可用。 请注意,边缘模式支持的function仅限于浏览器呈现内容的特定版本所支持的function。
从IE11开始,文档模式已被弃用,不应再使用,临时使用除外。 确保更新依赖于旧function和文档模式的网站以反映现代标准。
如果您必须以特定的文档模式为目标,以便您的网站在重新使用时能够正常运行,以支持现代标准和function,请注意您正在使用过渡function,而在未来版本中可能无法使用该过渡function。
如果您当前使用x-ua兼容标头来定位传统文档模式,则可能您的网站无法体现IE11提供的最佳体验。
Microsoft Edge (replaceWindows 10捆绑的Internet Explorer)
有关IE的“Edge”版本的X-UA兼容元标记的信息。 来自微软 :
介绍“生活”边缘文件模式
正如我们在2013年8月宣布的那样,我们从IE11开始弃用文档模式。 借助我们最新的平台更新,对传统文档模式的需求主要限于企业传统networking应用程序。 随着新的体系结构变化,这些传统的文档模式将与“生活”边缘模式的变化隔离,这将有助于保证更高级别的兼容性,以满足那些依赖于这些模式的客户,并帮助我们更快地改进Edge 。 IE的下一个主要版本仍将遵循Intranet站点提供的文档模式,兼容性视图列表上的站点以及仅与Enterprise Mode一起使用的文档模式。
公共互联网站点将使用新的Edge模式平台呈现(忽略X-UA兼容)。 我们的目标是从这里开始,Edge就是“生存”的文档模式,没有进一步的文档模式将会被引入。
随着Microsoft Edge中的更改在大多数情况下不再支持文档模式,Microsoft有一个工具可以扫描您的网站以检查是否有与Edge不兼容的代码。
Chrome浏览器= 1信息IE浏览器
也可以使用chrome=1
,或者使用上面的选项EX: <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
chrome=1
是为Google的Chrome框架定义的:
Google Chrome Frame是一款开源的浏览器插件。 安装插件的用户可以在浏览器中打开页面时访问Google Chrome的开放式networking技术和快速的JavaScript引擎。
Google Chrome Frame无缝地增强了您在Internet Explorer中的浏览体验。 它使用Google Chrome的渲染技术显示支持Google Chrome浏览器框架的网站,让您可以访问最新的HTML5function以及Google Chrome浏览器的性能和安全function,而不会中断通常的浏览器使用。
当谷歌浏览器框架安装,networking只是变得更好,你不必考虑。
但为了使该插件正常工作,您必须在X-UA兼容元标记中使用chrome=1
。
Chrome Frame的更多信息可以在这里find 。
注意: Google Chrome浏览器框架仅适用于IE9至IE9 ,并于2014年2月25日停用。 有关详细信息,请点击此处 。 谢谢@mck的链接。
validation:
HTML5 :
仅当使用<meta http-equiv="X-UA-Compatible" content="IE=Edge">
时,页面才会使用W3 Validator进行validation 。 对于其他值,它将抛出错误: 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
它不会validation。 我完全忽略了这个错误,因为现代浏览器完全忽略了这一行代码。
如果您必须具有完全有效的代码,那么请考虑通过设置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).
有关如何设置HTTP标头的更多详细信息,请参阅olibre的答案或bitinn的答案 。
XHTML
只要标签正确closures,使用<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
,IE: />
vs >
Twitter Bootstrap
自从2014年以来,Bootstrap团队一直强烈推荐这个标签,由twbs团队(https://github.com/twbs/bootlint)撰写的短文Bootlint在标签被省略时继续发出警告; 。 棉绒区分警告和错误,因此忽略这个标签的严重性可能被认为是次要的。
有关X-UA兼容的更多信息,请参阅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"> --------------------------
-
没有兼容性图标
IE9地址栏不显示兼容性视图button
而且页面也不会出现乱序的菜单,图像和文本框。 -
特征
这个元标记是必需的,以在IE8上启用javascript::JSON.parse()
(甚至当<!DOCTYPE html>
存在时) -
正确性
现代HTML / CSS / JavaScript的渲染/执行更有效(更好)。 -
性能
三叉戟渲染引擎在边缘模式下应该运行得更快。
用法
在你的HTML
<!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-
IE=edge
意味着IE应该使用其渲染引擎的最新(边缘)版本 -
chrome=1
意味着IE应该使用Chrome渲染引擎(如果安装的话)
或者更好的在你的networking服务器的configuration:
(另请参阅RiaD的答案 )
-
由pixeline提出的Apache
<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由Stef Pause提出
server { #... add_header X-UA-Compatible "IE=Edge,chrome=1"; }
-
由Lucas Riutzel提议的清漆代理
sub vcl_deliver { if( resp.http.Content-Type ~ "text/html" ) { set resp.http.X-UA-Compatible = "IE=edge,chrome=1"; } }
-
IIS (自v7以来)
<configuration> <system.webServer> <httpProtocol> <customHeaders> <add name="X-UA-Compatible" value="IE=edge,chrome=1" /> </customHeaders> </httpProtocol> </system.webServer> </configuration>
微软build议自IE11以来的边缘模式
正如Lynda注意到的(请参阅注释), IE11的兼容性更改build议使用边缘模式 :
从IE11开始,边缘模式是首选的文档模式; 它代表了对浏览器可用的现代标准的最高支持。
但微软的立场并不明朗。 另一个MSDN页面不推荐边缘模式 :
由于边缘模式会强制所有页面以标准模式打开,无论Internet Explorer的版本如何,您可能都会对使用Internet Explorer浏览的所有页面使用此模式。 不要这样做,因为从Windows Internet Explorer 8开始只支持
X-UA-Compatible
标头。
相反,微软build议使用<!DOCTYPE html>
:
如果您希望所有受支持的Internet Explorer版本以标准模式打开您的页面,请使用HTML5文档types声明
正如里卡多所解释的(在下面的评论中),任何DOCTYPE(HTML4,XHTML1 …)都可以用来触发标准模式,而不仅仅是HTML5的DOCTYPE。 重要的是在页面中总是有一个DOCTYPE。
Clara Onager甚至在指定传统文档模式的旧版本中已经注意到:
边缘模式仅用于testing目的; 不要在生产环境中使用它。
乌斯曼Ÿ以为克拉拉·昂格尔正在谈论:
示例仅供参考。 不要在生产环境中使用它。
<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" >
那么…在这个答案的其余部分,我给出了更多的解释,为什么使用content="IE=edge,chrome=1"
是一个很好的做法在生产。
历史
多年来(2000年至2008年), IE市场份额超过80% 。 而IE v6被认为是一个事实上的标准( 2003年 , 2004年,2005年和2006年只有IE6的市场份额达到80%到97%,所有IE版本的市场份额更大)。
由于IE6不尊重Web标准 ,开发人员不得不使用IE6testing他们的网站。 这种情况对于微软(MS)来说是非常好的,因为networking开发者必须购买 MS产品(例如IE不能在没有购买Windows的情况下使用IE),而且保持不合规格的盈利更多(即微软希望成为除其他之外的标准公司)。
因此许多网站只有IE6兼容,而且由于IE不符合网页标准,所有这些网站在兼容标准的浏览器上都不能很好地呈现。 更糟糕的是, 许多网站只需要IE浏览器 。
然而,目前Mozilla开始尽可能的尊重所有的Web标准(其他浏览器都是通过IE6来实现的)。 随着越来越多的网页开发者想要使用新的网页标准function,越来越多的网站比IE更受Firefox的支持。
当IE市场份额下降时,MS意识到保持标准不兼容并不是一个好主意。 因此,MS开始发布新的IE版本(IE8 / IE9 / IE10),越来越多的Web标准。
networking不兼容的问题
但问题是所有为IE6devise的网站:微软不能发布新的IE版本与这些旧的IE6devise的网站不兼容。 MS并没有推断IE版本的devise,而是要求开发者在他们的页面中添加额外的数据( X-UA-Compatible
)。
IE6仍然在2016年使用
目前,IE6仍在使用(2016年为0.7%) (2014年1月为4.5%),部分互联网网站仍然只符合IE6标准。 一些内部网站/应用程序使用IE6进行testing。 一些内联网站只能在IE6上运行。 这些公司/部门更愿意推迟迁移成本:其他优先事项,没有人知道如何实施网站/应用程序,遗留网站/应用程序的所有者已经破产…
中国占2013年IE6使用量的50%,但随着中国Linux发行量的增加 ,未来几年可能会有所变化。
对自己的networking技能有信心
如果你(尝试)尊重网页标准,你可以简单地使用http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"
。 为了保持与旧浏览器的兼容性,请避免使用最新的网页function:使用您想要支持的最老的浏览器所支持的子集。 或者如果你想进一步,你可以采用优雅的退化 , 渐进式的增强和不显眼的JavaScript的概念 。 (您也可能会喜欢阅读Web开发人员应该考虑什么? )
不要在乎最好的IE版本渲染:这不是你的工作,因为浏览器必须符合Web标准。 如果您的网站符合标准并使用适度的最新function,则浏览器必须符合您的网站 。
此外,由于有很多杀死 IE6的活动( IE6没有更多 , MS活动 ),现在你可以避免浪费时间与IEtesting!
个人IE6的经验
在2009-2012年,我曾为一家使用IE6的公司工作, 允许使用官方的单一浏览器 。 我只能实现一个IE6的Intranet网站。 我决定尊重网页标准,但是使用支持IE6的子集(HTML / CSS / JS)。
这很难,但是当公司切换到IE8时,网站仍然渲染得很好,因为我用Firefox和firebug来检查网页标准的兼容性;)
区别在于,如果只指定DOCTYPE
,则IE的兼容性视图设置优先。 默认情况下,这些设置强制所有Intranet站点进入兼容性视图,而不pipeDOCTYPE
。 还有一个checkbox可用于所有网站的兼容性视图,无论DOCTYPE
如何。
X-UA-Compatible
覆盖兼容性视图设置,因此无论浏览器设置如何,页面都将在标准模式下呈现。 这迫使标准模式:
- 内联网页面
- 当计算机pipe理员select“在兼容性视图中显示所有网站”作为默认外部网页时,请考虑大公司,政府,大学
- 当您无意中最终在Microsoft兼容性视图列表
- 用户手动将网站添加到“兼容性视图设置”列表中的情况
DOCTYPE
本身不能做到这一点; 在这些情况下,无论DOCTYPE
如何,您都将以兼容性视图模式之一结束。
如果meta
标签和HTTP标头都被指定,则meta
标签优先。
这个答案基于检查IE8 , IE9和IE10中决定文档模式的完整规则。 请注意,查看DOCTYPE
是决定文档模式的最后一个后备。
使用这个强制IE来隐藏地址栏中那个烦人的浏览器兼容性button:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
由于我不能添加评论标记的答案,我会在这里发表。
除了正确的答案,你确实可以有这个validation。 由于这个元标记是只针对IE所有你需要做的就是添加一个IE条件。
<!--[if IE]> <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> <![endif]-->
这样做就像添加任何其他IE条件语句,只适用于IE和其他浏览器将不会受到影响。
我想这个来自微软的图解释了所有。 为了告诉IE如何呈现内容,!DOCTYPE必须使用X-UA兼容元标记。 !DOCTYPE本身对更改IE文档模式没有影响。
http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png
只是为了完整性,你实际上并不需要将它添加到你的HTML中(这是HTML5中未知的http-equiv)
这样做,永远不要回头(第一个例子为Apache ,第二个为Nginx )
Header set X-UA-Compatible "IE=Edge,chrome=1" add_header X-UA-Compatible "IE=Edge,chrome=1";
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
要使该行按预期工作,请确保:
- 这是
<head>
之后的第一个元素 - 元标记之前没有使用条件注释 ,例如
<html>
元素
否则一些IE版本就会忽略它。
UPDATE
这两个规则是简化的,但它们很容易记住和validation。 尽pipeMSDN文档声明你可以把标题和其他元标签之前,我不会build议这样做。
如何使它与条件注释。
关于元素在头部的顺序的有趣的文章。 (blogs.msdn.com,用于IE)
参考
从MSDN文档 :
除了标题元素和其他元素之外,
X-UA-Compatible
[…]必须出现在网页头部(HEAD部分)之前的所有其他元素之前。
如果您使用您的网站作为服务器IE喜欢切换到compability尽pipeDOCTYPE服务器在同一networking。
添加meta http-equiv="X-UA-Compatible" content="IE=Edge"
会禁用这种不需要的行为。
这是1谷歌查询了 ,但这里是:
http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
了解传统的文档模式
使用以下值从Internet Explorer 6到IE11以边缘模式(即Internet Explorer支持的最高标准模式)显示网页。
<meta http-equiv="x-ua-compatible" content="IE=edge"
请注意 ,这在function上等同于使用HTML5文档types。 它将Internet Explorer放入支持最高的文档模式。 最边缘对于定期维护的网站是非常有用的,这些网站经常testing多个浏览器(包括Internet Explorer)之间的互操作性。
注意从IE11开始,边缘模式被认为是首选文档模式。 (在早期版本中,它被认为是实验性的。)要了解更多信息,请参阅已弃用文档模式。 从Windows Internet Explorer 8开始,一些Web开发人员使用边缘模式元素来隐藏地址栏上的兼容性视图button。 从IE11开始,由于该button已从地址栏中删除,因此不再需要。 因为它强制所有页面以标准模式打开,不pipeInternet Explorer的版本如何,您可能会对使用Internet Explorer浏览的所有页面使用边缘模式。 不要这样做,因为只有从Internet Explorer 8开始支持X-UA兼容标头。
提示如果您希望Internet Explorer的所有受支持版本以标准模式打开页面,请使用HTML5文档types声明,如前面的示例所示。
search结果中还有:
- <meta http-equiv =“X-UA-Compatible”content =“IE = edge”>是做什么的?
只需一句话就可以指示Internet Explorer使用其最新的渲染引擎
<meta http-equiv="x-ua-compatible" content="ie=edge">