<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如何。

IE兼容性视图设置对话框

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"> 

要使该行按预期工作,请确保:

  1. 这是<head>之后的第一个元素
  2. 元标记之前没有使用条件注释 ,例如<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">