首页 文章

<meta http-equiv =“X-UA-Compatible”content =“IE = edge”>是做什么用的?

提问于
浏览
1240

如果一个网页开头有什么区别

<!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 元 Headers ,因为我只想在所有IE版本中以大多数标准模式呈现它 .

12 回答

  • 13

    2.1.3.5 X-UA兼容性元标记和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 标签 .

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

  • 1507

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

    enter image description here

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

  • 314

    使用此命令强制IE隐藏地址栏中恼人的浏览器兼容性按钮:

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

    不同之处在于,如果仅指定 DOCTYPE ,则IE的兼容性视图设置优先 . 默认情况下,无论 DOCTYPE 如何,这些设置都会强制所有Intranet站点进入兼容性视图 . 还有一个复选框,可以为所有网站使用兼容性视图,而不管 DOCTYPE .

    IE Compatibility View Settings dialog

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

    • 内联网页面
      当计算机管理员选择“在兼容性视图中显示所有网站”作为默认设置时,

    • 外部网页 - 认为大公司,政府,大学

    • 当你无意中结束了Microsoft Compatibility View List

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

    DOCTYPE 独自不能那样做;在这些情况下,无论 DOCTYPE 如何,您都将处于兼容性视图模式之一 .

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

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

  • 3

    只说一句话 Instruct Internet Explorer to use its latest rendering engine

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

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

    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                       --------------------------
    
    • No compatibility icon
      IE9地址栏未显示Compatibility View button
      并且该页面也不会显示混乱的不合适的菜单,图像和文本框 .

    • Features
      在IE8上启用 javascript::JSON.parse() 需要此元标记
      (即使存在 <!DOCTYPE html>

    • Correctness
      渲染/执行现代HTML / CSS / JavaScript更有效(更好) .

    • Performance
      Trident rendering engine应该在边缘模式下运行得更快 .


    用法

    In your HTML

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

    Or better in the configuration of your web server:
    (另见RiaD's answer

    pixeline提议的

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

    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>
    

    Microsoft推荐自IE11以来的Edge模式

    正如Lynda(注释)所注意到的,Compatibility changes in IE11建议使用Edge模式:

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

    But the position of Microsoft was not clear. 另一个MSDN page did not recommend Edge mode

    由于边缘模式强制在标准模式下打开所有页面,因此无论Internet Explorer的版本如何,您都可能会对使用Internet Explorer查看的所有页面使用此页面 . 请勿这样做,因为仅从Windows Internet Explorer 8开始支持X-UA兼容标头 .

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

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

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

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

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

    这是令人困惑的Usman Y以为Clara Onager在谈论:

    [...]示例仅供说明之用;不要在 生产环境 环境中使用它 . <meta http-equiv =“X-UA-Compatible”content =“IE = 7,9,10”>

    Well... In the rest of this answer I give more explanations why using content="IE=edge,chrome=1" is a good practice in production.


    历史

    多年(2000年至2008年),IE market share was more than 80% . IE v6 被认为是事实上的标准(2003的市场份额为80%至97%,IE6仅为2004, 2005 and 2006,所有IE版本的市场份额更多) .

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

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

    然而,在这个时候,Mozilla开始了Firefox开发,尽可能地尊重所有Web标准(其他浏览器实现了IE6渲染页面) . 随着越来越多的Web开发人员想要使用新的Web标准功能,越来越多的网站受到Firefox的支持而不是IE .

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


    网络不兼容的问题

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

    IE6仍在2016年使用

    如今,IE6仍然使用(0.7% in 2016)(2014年1月为4.5%),一些互联网网站仍然符合IE6标准 . 一些Intranet网站/应用程序使用IE6进行测试 . 某些Intranet网站仅在IE6上100%正常运行 . 这些公司/部门倾向于推迟迁移成本:其他优先事项,没有人不再知道网站/应用程序是如何实现的,遗留网站/应用程序的所有者破产了......

    中国占2013年IE6使用量的50%,但在未来几年可能会改变为Chinese Linux distribution is being broadcast .

    对您的网络技能充满信心

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

    不要关心最好的IE版本渲染:这不是你的工作,因为浏览器必须符合web标准 . 如果您的网站符合标准并使用适度的最新功能,那么 browsers have to be compliant with your website .

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

    个人IE6体验

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

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

  • 55

    October 2015 Update

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

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


    X-UA-Compatible 元标记允许Web作者选择应该呈现页面的Internet Explorer版本 . IE11改变了这些模式;请参阅下面的IE11注释 . Microsoft Edge,将在IE11之后发布的浏览器,在某些情况下只会尊重 X-UA-Compatible 元标记 . 请参阅下面的Microsoft Edge注释 .

    根据Microsoft的说法,当使用 X-UA-Compatible 标签时,它应该在文档_374105中尽可能高:

    如果您使用的是X-UA兼容的META标签,您可以将其尽可能靠近页面顶部放置 . Internet Explorer开始使用最新版本解释标记 . 当Internet Explorer遇到兼容X-UA的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"

    为了尝试理解每个含义,这里是Microsoft提供的定义:

    Internet Explorer支持许多文档兼容性模式,这些模式启用不同的功能并可能影响内容的显示方式:边缘模式告诉Internet Explorer以可用的最高模式显示内容 . 使用Internet Explorer 9,这相当于IE9模式 . 如果Internet Explorer的未来版本支持更高的兼容性模式,则设置为边缘模式的页面将以该版本支持的最高模式显示 . 当使用Internet Explorer 9查看时,这些相同的页面仍将以IE9模式显示.Internet Explorer支持许多文档兼容模式,这些模式启用不同的功能并可能影响内容的显示方式:IE11模式为已 Build 和新兴行业提供最高支持标准,包括HTML5,CSS3等 . IE10模式为已 Build 和新兴的行业标准提供最高支持,包括HTML5,CSS3等 . IE9模式为已 Build 和新兴的行业标准提供了最高支持,包括HTML5(工作草案),W3C级联样式表级别3规范(工作草案),可缩放矢量图形(SVG)1.0规范等 . [编者注:IE 9不支持CSS3动画] . IE8模式支持许多既定标准,包括W3C级联样式表2.1级规范和W3C选择器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标准模式显示,而quirks模式指令以IE5模式显示 . 与IE7模式不同,Emulate IE7模式遵循该指令 . 对于许多网站,这是首选的兼容模式 . IE5模式呈现内容,好像它是由Internet Explorer 7以怪异模式显示的,这与Microsoft Internet Explorer 5中显示内容的方式非常相似 .

    IE10 NOTE: 从IE10开始,怪癖模式的行为与早期版本的浏览器不同 . 在IE9及更早版本中,怪癖模式将网页限制为IE5.5支持的功能 . 在IE10中,quirks模式符合HTML5规范中指定的差异 .

    就个人而言,我总是选择 http-equiv="X-UA-Compatible" content="IE=edge" 元标记,因为旧版本有很多错误,我不希望IE决定进入"Compatibility mode"并将我的网站显示为IE7 vs IE8或9.我总是喜欢最新版本的IE .

    IE11

    来自Microsoft

    从IE11开始,边缘模式是首选的文档模式;它代表了浏览器可用的现代标准的最高支持 . 使用HTML5文档类型声明启用边缘模式:<!doctype html>边缘模式是在Internet Explorer 8中引入的,并且在每个后续版本中都可用 . 请注意,边缘模式支持的功能仅限于呈现内容的特定浏览器版本支持的功能 . 从IE11开始,文档模式已弃用,不应再使用,临时情况除外 . 确保更新依赖于旧功能和文档模式的站点以反映现代标准 . 如果您必须定位特定文档模式,以便在您重新设计网站时支持现代标准和功能,请注意您正在使用过渡功能,该功能可能在将来的版本中不可用 . 如果您当前使用x-ua兼容标头来定位旧文档模式,则您的网站可能无法反映IE11提供的最佳体验 .

    Microsoft Edge (Replacement for Internet Explorer that comes bundled with Windows 10)

    有关"Edge"版IE的 X-UA-Compatible 元标记的信息 . From Microsoft

    介绍“生活”边缘文档模式正如我们在2013年8月宣布的那样,我们正在弃用IE11中的文档模式 . 通过我们最新的平台更新,对遗留文档模式的需求主要限于企业遗留Web应用程序 . 随着新的体系结构更改,这些遗留文档模式将与“生活”边缘模式中的更改隔离开来,这将有助于为依赖这些模式的客户提供更高级别的兼容性,并帮助我们更快地在Edge中进行更改 . IE的下一个主要版本仍将遵循Intranet站点,兼容性视图列表中的站点以及仅与企业模式一起使用时所服务的文档模式 . 公共Internet站点将使用新的Edge模式平台进行渲染(忽略X-UA-Compatible) . Edge的目标是“生活”文档模式这里没有进一步的文件模式 .

    由于Microsoft Edge中的更改在大多数情况下不再支持文档模式,因此Microsoft有一个tool来扫描您的站点以检查它是否具有与Edge不兼容的代码 .

    Chrome=1 Info for IE

    还有 chrome=1 ,您可以使用或与上述选项之一一起使用,如: <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> . chrome=1 适用于Google的Chrome Frame,定义为:

    Google Chrome Frame是一个开源浏览器插件 . 安装了插件的用户可以在浏览器中打开页面时访问Google Chrome的开放式Web技术和快速JavaScript引擎 . Google Chrome Frame可无缝增强您在Internet Explorer中的浏览体验 . 它使用Google Chrome的渲染技术显示支持Google Chrome Frame的网站,让您可以访问最新的HTML5功能以及Google Chrome的性能和安全功能,而不会以任何方式中断您常用的浏览器使用情况 . 安装Google Chrome浏览器内嵌框架后,无需考虑即可让网络变得更好 .

    但是要使该插件工作,您必须在 X-UA-Compatible meta标签中使用 chrome=1 .

    有关Chrome Frame的更多信息,请访问here .

    Note: Google Chrome Frame仅适用于IE6 through IE9,于2014年2月25日停用 . 更多信息可以在here找到 . 感谢@mck的链接 .

    Validation:

    HTML5

    仅当使用 <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 时,页面才会使用_374139进行验证 . 对于其他值,它将抛出错误: 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标头在服务器级别执行此操作 . 微软表示, 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

    只要标签正确关闭(即 /> vs > ),使用_374147时验证就没有问题 .

    Twitter Bootstrap

    自至少2014年以来,Bootstrap团队强烈建议使用此标记,并且Bootlint,twbs团队创作的linter在省略标记时继续抛出warning . linter区分警告和错误,因此省略此标记的严重性可能被认为是次要的 .


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

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

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

  • 4

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

    除了正确的答案,您确实可以通过验证 . 由于此元标记仅针对IE,因此您需要做的是添加IE条件 .

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

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

  • 22

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

    这样做,永远不要回头( apache 的第一个例子, nginx 的第二个例子)

    Header set X-UA-Compatible "IE=Edge,chrome=1"
    
    add_header X-UA-Compatible "IE=Edge,chrome=1";
    
  • 11
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    

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

    • 这是 <head> 之后的第一个元素
      在元标记之前使用
    • conditional comments,e . G . 在 <html> 元素上

    否则一些IE版本会忽略它 .

    UPDATE

    这两条规则已经过简化,但很容易记住和验证 . 尽管MSDN文档声明您可以在此之前放置 Headers 和其他元标记,但我不建议这样做 .

    How make it work with conditional comments.

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

    REFERENCE

    来自MSDN documentation

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

  • 1

    如果您在与IE服务器相同的网络中使用您的网站,尽管有DOCTYPE,IE仍会切换到 compability mode .
    添加 meta http-equiv="X-UA-Compatible" content="IE=Edge" disables 这种不受欢迎的行为 .

  • 24

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

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

    了解旧文档模式使用以下值以边缘模式显示网页,这是Internet Explorer支持的最高标准模式,从Internet Explorer 6到IE11 . <meta http-equiv =“x-ua-compatible”content =“IE = edge”
    请注意,这在功能上等同于使用HTML5 doctype . 它将Internet Explorer置于支持的最高级别文件模式 . Edge最常用于定期维护的网站,这些网站经常在多个浏览器(包括Internet Explorer)之间进行互操作性测试 . 注意从IE11开始,边缘模式被认为是首选文档模式 . (在早期版本中,它被认为是实验性的 . )要了解更多信息,请参阅不推荐使用文档模式 . 从Windows Internet Explorer 8开始,一些Web开发人员使用边缘模式元素隐藏地址栏上的“兼容性视图”按钮 . 从IE11开始,由于按钮已从地址栏中删除,因此不再需要这样做 . 因为它强制所有页面都以标准模式打开,所以无论Internet Explorer的版本如何,您都可能会对使用Internet Explorer查看的所有页面使用边缘模式 . 不要这样做,因为仅从Internet Explorer 8开始支持X-UA兼容标头 . 提示如果希望所有受支持的Internet Explorer版本以标准模式打开页面,请使用HTML5文档类型声明,如图所示在前面的例子中 .

    搜索结果中还有:

相关问题