Co dělá <meta http-equiv="X-UA-Compatible" content="IE=edge">?

Jaký je rozdíl, když jedna webová stránka začíná slovy

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

a Pokud stránka začíná slovy

<!DOCTYPE html> 
<html> 
  <head> 
     <!-- without X-UA-Compatible meta -->

Pokud v tom není žádný rozdíl, předpokládám, že mohu ignorovat metazáhlaví X-UA-Compatible, protože chci, aby se stránka zobrazovala v nejstandardnějším režimu ve všech verzích IE.

Řešení

Aktualizace z října 2015

Tato odpověď byla zveřejněna před několika lety a nyní by otázka měla znít: Měli byste vůbec uvažovat o použití značky X-UA-Compatible na svých stránkách? vzhledem ke změnám, které Microsoft provedl ve svých prohlížečích (více o nich níže). V závislosti na tom, jaké prohlížeče Microsoft podporujete, nemusíte nadále používat značku X-UA-Compatible. Pokud potřebujete podporovat IE9 nebo IE8, pak bych doporučoval značku používat. Pokud podporujete pouze nejnovější prohlížeče (IE11 a/nebo Edge), pak bych zvážil úplné vypuštění této značky. Pokud používáte Twitter Bootstrap a potřebujete eliminovat varování při ověřování, musí se tento tag objevit v uvedeném pořadí. Další informace naleznete níže:

Metaznačka X-UA-Compatible umožňuje autorům webu zvolit, v jaké verzi prohlížeče Internet Explorer se má stránka vykreslovat. IE11 provedl změny v těchto režimech; viz níže uvedená poznámka k IE11. Prohlížeč Microsoft Edge, který nahradil IE11, respektuje metaznačku X-UA-Compatible pouze za určitých okolností. Viz níže uvedená poznámka k prohlížeči Microsoft Edge. Podle společnosti Microsoft by se při použití značky X-UA-Compatible měla nacházet co nejvýše v hlavě dokumentu: Pokud používáte značku X-UA-Compatible META, měli byste ji umístit co nejblíže horní části stránky'HEAD. Internet Explorer začne interpretovat značky pomocí nejnovější verze. Když Internet Explorer narazí na značku X-UA-Compatible META, začne znovu používat engine určené verze'. To má vliv na výkon, protože prohlížeč se musí zastavit a znovu začít analyzovat obsah. Zde jsou vaše možnosti:

  • "IE=edge"
  • "IE=11"
  • "IE=EmulateIE11"
  • "IE=10"
  • "IE=EmulateIE10"
  • "IE=9"
  • "IE=EmulateIE9
  • "IE=8"
  • "IE=EmulateIE8"
  • "IE=7"
  • "IE=EmulateIE7"
  • "IE=5" Abychom se pokusili pochopit, co který z nich znamená, uvádíme definice poskytnuté společností Microsoft:

    Internet Explorer podporuje řadu režimů kompatibility dokumentů, které umožňují různé funkce a mohou ovlivnit způsob zobrazení obsahu:

    • Režim Edge říká aplikaci Internet Explorer, aby zobrazovala obsah v nejvyšším dostupném režimu. V prohlížeči Internet Explorer 9 je to ekvivalent režimu IE9. Pokud by budoucí verze Internet Exploreru podporovala vyšší režim kompatibility, stránky nastavené do režimu edge by se zobrazovaly v nejvyšším režimu podporovaném touto verzí. Stejné stránky by se při prohlížení v aplikaci Internet Explorer 9 stále zobrazovaly v režimu IE9. Internet Explorer podporuje řadu režimů kompatibility dokumentů, které umožňují různé funkce a mohou ovlivnit způsob zobrazení obsahu:
    • Režim IE11 poskytuje nejvyšší dostupnou podporu pro zavedené i nově vznikající průmyslové standardy, včetně HTML5, CSS3 a dalších.
    • Režim IE10 poskytuje nejvyšší dostupnou podporu pro zavedené i nově vznikající průmyslové standardy, včetně HTML5, CSS3 a dalších.
    • Režim IE9 poskytuje nejvyšší dostupnou podporu pro zavedené a nově vznikající průmyslové standardy, včetně HTML5 (pracovní návrh), specifikace W3C Cascading Style Sheets Level 3 (pracovní návrh), specifikace Scalable Vector Graphics (SVG) 1.0 a dalších. [Poznámka redakce: IE 9 nepodporuje animace CSS3].
    • Režim IE8 podporuje mnoho zavedených standardů, včetně specifikace W3C Cascading Style Sheets Level 2.1 a rozhraní W3C Selectors API; poskytuje také omezenou podporu specifikace W3C Cascading Style Sheets Level 3 (Working Draft) a dalších vznikajících standardů.
    • Režim IE7 vykresluje obsah, jako by byl zobrazen v režimu standardů v prohlížeči Internet Explorer 7, ať už stránka obsahuje nebo neobsahuje direktivu .
    • Režim Emulate IE9 říká aplikaci Internet Explorer, aby použila směrnici k určení způsobu vykreslení obsahu. Směrnice v režimu standardů se zobrazí v režimu IE9 a směrnice v režimu quirks se zobrazí v režimu IE5. Na rozdíl od režimu IE9 režim Emulate IE9 respektuje direktivu .
    • Režim Emulate IE8 říká prohlížeči Internet Explorer, aby při určování způsobu vykreslování obsahu používal direktivu . Směrnice režimu Standards se zobrazí v režimu IE8 a směrnice režimu quirks se zobrazí v režimu IE5. Na rozdíl od režimu IE8 režim Emulate IE8 respektuje direktivu .
    • Režim Emulate IE7 říká prohlížeči Internet Explorer, aby při určování způsobu vykreslování obsahu používal direktivu . Směrnice v režimu standardů se zobrazují v režimu standardů Internet Exploreru 7 a směrnice v režimu quirks se zobrazují v režimu IE5. Na rozdíl od režimu IE7 režim Emulate IE7 respektuje direktivu . Pro mnoho webových stránek je to preferovaný režim kompatibility.
    • Režim IE5 vykresluje obsah tak, jako by jej v režimu quirks zobrazoval prohlížeč Internet Explorer 7, což je velmi podobné způsobu zobrazení obsahu v prohlížeči Microsoft Internet Explorer 5. IE10 POZNÁMKA: Od verze IE10 se režim quirks chová jinak než v dřívějších verzích prohlížeče. V IE9 a dřívějších verzích omezoval režim quirks webové stránky na funkce podporované IE5.5. V IE10 se quirks mode řídí rozdíly uvedenými ve specifikaci HTML5. Osobně vždy volím metaznačku http-equiv="X-UA-Compatible" content="IE=edge", protože starší verze mají spoustu chyb a nechci, aby se IE rozhodl přejít do "režimu kompatibility" a zobrazil můj web jako IE7 vs. IE8 nebo 9. Vždy dávám přednost nejnovější verzi IE. IE11 Od Microsoft: Počínaje IE11 je režim okrajů preferovaným režimem dokumentu; představuje nejvyšší podporu moderních standardů, kterou má prohlížeč k dispozici. K zapnutí režimu edge použijte deklaraci typu dokumentu HTML5: ` Režim Edge byl zaveden v prohlížeči Internet Explorer 8 a byl k dispozici v každé následující verzi. Všimněte si, že funkce podporované režimem edge jsou omezeny na ty, které podporuje konkrétní verze prohlížeče vykreslujícího obsah. Počínaje IE11 jsou režimy dokumentů zastaralé a neměly by se již používat, s výjimkou dočasných případů. Ujistěte se, že weby, které se spoléhají na starší funkce a režimy dokumentů, jsou aktualizovány tak, aby odrážely moderní standardy. Pokud se musíte zaměřit na určitý režim dokumentu, aby vaše stránky fungovaly, zatímco je přepracováváte na podporu moderních standardů a funkcí, uvědomte si, že používáte přechodnou funkci, která nemusí být v budoucích verzích k dispozici. Pokud v současné době používáte záhlaví x-ua-compatible pro cílení na starší režim dokumentu, je možné, že váš web nebude odrážet nejlepší zkušenosti dostupné v IE11. ***[Microsoft Edge][3] (náhrada za Internet Explorer dodávaná se systémem Windows 10)*** Informace o metaznačceX-UA-Compatiblepro "Edge" verzi IE. [Od společnosti Microsoft][4]: **Zavedení "živého" režimu dokumentu Edge** Jak jsme oznámili v srpnu 2013, od verze IE11 vyřazujeme režimy dokumentů. S našimi posledními aktualizacemi platformy se potřeba starších režimů dokumentů omezuje především na starší webové aplikace pro podniky. Díky novým architektonickým změnám budou tyto starší dokumentové režimy izolovány od změn v "živém" režimu Edge, což pomůže zaručit mnohem vyšší úroveň kompatibility pro zákazníky, kteří jsou na těchto režimech závislí, a pomůže nám to ještě rychleji postupovat při vylepšování Edge. IE bude i nadále respektovat režimy dokumentů obsluhované intranetovými stránkami, stránkami na seznamu Compatibility View a při použití pouze s režimem Enterprise Mode. Veřejné internetové stránky budou vykreslovány pomocí nové platformy režimů Edge (ignorující X-UA-Compatible). Naším cílem je, aby Edge byl od této chvíle "živým" režimem dokumentu a aby se do budoucna nezaváděly žádné další režimy dokumentu. Vzhledem ke změnám v prohlížeči Microsoft Edge, který již ve většině případů nepodporuje režimy dokumentů, má společnost Microsoft k dispozici [nástroj][5], který zkontroluje váš web a zjistí, zda neobsahuje kód, který není kompatibilní s prohlížečem Edge. ***Chrome=1 Informace pro IE*** K dispozici je také možnostchrome=1, kterou můžete použít nebo použít společně s jednou z výše uvedených možností, jako např:<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">.chrome=1je pro Google'Chrome Frame, který je definován jako: Google Chrome Frame je zásuvný modul prohlížeče s otevřeným zdrojovým kódem. Uživatelé, kteří mají tento doplněk nainstalovaný, mají při otevírání stránek v prohlížeči přístup k otevřeným webovým technologiím Google Chrome'a rychlému enginu JavaScript. Rámeček Google Chrome Frame bez problémů rozšiřuje možnosti prohlížení v prohlížeči Internet Explorer. Zobrazuje stránky s podporou Google Chrome Frame pomocí vykreslovací technologie Google Chrome, takže máte přístup k nejnovějším funkcím HTML5 i k výkonnostním a bezpečnostním funkcím Google Chrome, aniž by jakkoli narušoval běžné používání prohlížeče. Když je nainstalován Google Chrome Frame, web je prostě lepší, aniž byste na to museli myslet. Aby však tento doplněk fungoval, musíte v meta taguX-UA-Compatiblepoužítchrome=1. Více informací o Chrome Frame najdete [zde][6]. **Poznámka:** Google Chrome Frame funguje pouze pro [IE6 až IE9][13] a byl vyřazen 25. února 2014. Více informací naleznete [zde][7]. Za odkaz děkujeme @mck. ***Ověření:*** **HTML5**: Stránka bude validována pomocí [W3 Validator][8] pouze při použití<meta http-equiv="X-UA-Compatible" content="IE=Edge">. V případě jiných hodnot to vyhodí chybu:Prvek meta s atributem http-equiv, jehož hodnota je X-UA-Compatible, musí mít atribut content s hodnotou IE=edge.Jinými slovy, pokud máteIE=edge,chrome=1, nebude to validovat. Tuto chybu zcela ignoruji, protože moderní prohlížeče tento řádek kódu jednoduše ignorují. Pokud musíte mít zcela platný kód, zvažte, zda to udělat na úrovni serveru nastavením hlavičky HTTP. Jako poznámku Microsoft uvádí:Pokud jsou odeslány oba tyto pokyny (meta a HTTP), má přednost preference vývojáře (prvek meta) před nastavením webového serveru (hlavička HTTP).Podrobnější informace o nastavení hlavičky HTTP naleznete v [olibre's answer][9] nebo [bitinn's answer][10]. **XHTML** Při použití<meta http-equiv="X-UA-Compatible" content="IE=Edge" />není problém s validací, pokud je tag správně uzavřen (tj./>vs>`). Twitter Bootstrap Tento tag je týmem Bootstrap důrazně doporučován přinejmenším od roku 2014 a Bootlint, linter, jehož autorem je tým twbs, nadále vyhazuje varování, pokud je tag vynechán. Linter rozlišuje mezi varováním a chybou, a proto lze závažnost vynechání této značky považovat za menší.

      Další informace o značce X-UA-Compatible naleznete na stránkách společnosti Microsoft Web Defining Document Compatibility. Další informace o tom, co IE podporuje, najdete na caniuse.com. Další informace o požadavcích na Twitter Bootstrap naleznete na stránkách projektu bootlint wiki stránka.

Komentáře (31)

Použijte content="IE=edge,chrome=1"   Přeskočit ostatní X-UA-Compatible režimy

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
                                   -------------------------- 
  • Není ikona kompatibility
    V adresním řádku IE9 se nezobrazuje tlačítko [Compatibility View][MSICON]
    a na stránce se také nezobrazuje změť nemístných nabídek, obrázků a textových polí.
  • Funkce
    Tato metaznačka je nutná pro zapnutí javascript::JSON.parse() v IE8
    (i když je přítomen ``).
  • Korektnost
    Vykreslování/vykonávání moderního HTML/CSS/JavaScriptu je validnější (hezčí).
  • Výkon
    Vykreslovací jádro [Trident][] by mělo běžet rychleji v režimu edge. Vykreslovací jádro [Trident]: https://en.wikipedia.org/wiki/Internet_Explorer

    Použití

    Ve vašem HTML




    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  • IE=edge znamená, že IE by měl používat nejnovější (edge) verzi svého vykreslovacího jádra.

  • chrome=1 znamená, že IE by měl používat vykreslovací jádro Chrome, pokud je nainstalováno. Nebo lépe v konfiguraci vašeho webového serveru:
    (viz také odpověď RiaD's).

  • Apache podle návrhu pixeline.

          BrowserMatch MSIE ie
          Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
    
        Header append Vary User-Agent
  • Nginx podle návrhu Stef Pause server {

    ...

        add_header X-UA-Compatible "IE=Edge,chrome=1";
      }
  • Varnish proxy podle návrhu Lucas Riutzel sub vcl_deliver { if( resp.http.Content-Type ~ "text/html" ) { set resp.http.X-UA-Compatible = "IE=edge,chrome=1"; } }

  • IIS (od verze 7)


Společnost Microsoft doporučuje Edge mode od IE11

Jak si všimla Lynda (viz komentáře), Compatibility changes in IE11 doporučuje Edge mode:

Počínaje IE11 je preferovaným režimem dokumentu režim okrajů; představuje nejvyšší podporu moderních standardů, kterou má prohlížeč k dispozici.

Postoj společnosti Microsoft však nebyl jasný. Jiná [stránka MSDN nedoporučuje Edge mode][noEdge]:

Protože režim Edge nutí všechny stránky otevírat v režimu standardů, bez ohledu na verzi Internet Exploreru, byste mohli být v pokušení používat jej pro všechny stránky zobrazované v aplikaci Internet Explorer. Nedělejte to, protože záhlaví X-UA-Compatible je podporováno až od verze 2. s prohlížečem Windows Internet Explorer 8. Místo toho společnost Microsoft doporučuje používat ``: Pokud chcete, aby všechny podporované verze prohlížeče Internet Explorer otevíraly své stránky v režimu standardů, použijte deklaraci typu dokumentu HTML5 [...]. Jak vysvětluje Ricardo (v komentářích níže), ke spuštění standardního režimu lze použít jakýkoli DOCTYPE (HTML4, XHTML1...), nejen DOCTYPE HTML5's. Důležité je, aby byl na stránce vždy DOCTYPE. Clara Onager si toho dokonce všimla ve starší verzi Specifikace starších režimů dokumentů: Režim Edge je určen pouze pro testovací účely; nepoužívejte jej v produkčním prostředí. Je to tak matoucí, že Usman Y si myslel, že mluví Clara Onager: Příklad [...] je uveden pouze pro ilustrační účely; nepoužívejte jej v produkčním prostředí.

<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" > **No... Ve zbytku této odpovědi vysvětlím, proč je použití `content="IE=edge,chrome=1"` v produkčním prostředí vhodné.** --------------------------------- Historie ------- Po mnoho let (2000 až 2008) byl [podíl IE na trhu více než 80 %][IEMS]. A IE **v6** byl považován za *de facto* standard (80% až 97% podíl na trhu v [2003][OneStat], [2004, 2005 a 2006][IE6] pouze pro IE6, větší podíl na trhu se všemi verzemi IE). Protože IE6 nerespektoval [webové standardy](http://en.wikipedia.org/wiki/Web_standards), vývojáři **musel** testovat své webové stránky pomocí IE6. Tato situace byla pro společnost Microsoft (MS) výhodná, protože vývojáři webových stránek museli **kupovat** produkty MS (např. IE nelze používat bez zakoupení Windows) a bylo pro ně výhodnější zůstat v nesouladu (tj. Microsoft se chtěl stát **standardem** s vyloučením ostatních společností). Proto bylo mnoho webů kompatibilních pouze s IE6, a protože IE nebyl kompatibilní s webovým standardem, všechny tyto weby nebyly dobře vykreslovány v prohlížečích kompatibilních se standardy. A co hůř, [mnoho webů vyžadovalo pouze IE](http://hintsforums.macworld.com/showthread.php?t=111479). V této době však Mozilla zahájila vývoj Firefoxu respektujícího v maximální možné míře všechny webové standardy (ostatní prohlížeče byly implementovány tak, aby vykreslovaly stránky jako IE6). Protože stále více vývojářů webových stránek chtělo využívat nové funkce webových standardů, stále více webových stránek bylo podporováno Firefoxem více než IE. Když podíl IE na trhu klesal, MS si uvědomil, že zůstat nekompatibilní se standardy není dobrý nápad. Proto MS začal vydávat nové verze IE (IE8/IE9/IE10), které stále více respektovaly webové standardy. --------------------------------- Problém nekompatibility s webem --------------------------- Problémem jsou však všechny webové stránky navržené pro IE6: Microsoft nemohl vydat nové verze IE nekompatibilní s těmito starými webovými stránkami navrženými pro IE6. Místo toho, aby MS odvozoval verzi IE, pro kterou byla webová stránka navržena, požadoval po vývojářích, aby na své stránky přidávali další údaje (`X-UA-Compatible`). IE6 se používá i v roce 2016 ------------------------- V současné době se IE6 stále používá [(0,7 % v roce 2016)][IE62014] (4,5 % v lednu 2014) a některé internetové stránky jsou stále kompatibilní pouze s IE6. Některé intranetové webové stránky/aplikace jsou testovány s použitím IE6. Některé intranetové webové stránky jsou 100% funkční pouze v IE6. Tyto společnosti/oddělení raději odkládají náklady na migraci: jiné priority, nikdo už neví, jak byl web/aplikace implementován, majitel staršího webu/aplikace zkrachoval... Čína představuje [50 % používání IE6 v roce 2013](www.ie6countdown.com/), ale to se může v příštích letech změnit, protože se [čínská linuxová distribuce vysílá](http://www.canonical.com/content/canonical-and-chinese-standards-body-announce-ubuntu-collaboration). Buďte si jisti svými webovými dovednostmi --------------------------------- Pokud (se snažíte) respektovat webový standard, můžete jednoduše vždy použít `http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"`. Chcete-li zachovat kompatibilitu se starými prohlížeči, stačí se vyhnout používání nejnovějších webových funkcí: použijte podmnožinu podporovanou nejstarším prohlížečem, který chcete podporovat. Nebo chcete-li jít ještě dál, můžete přijmout koncepty jako [Graceful degradation], [Progressive enhancement] a [Unobtrusive JavaScript]. (Možná si také rádi přečtete článek [Co by měl vývojář webu zvážit?]). Nestarejte se o nejlepší vykreslování verze IE: to není vaše práce, protože prohlížeče musí být v souladu s webovými standardy. Pokud je váš web v souladu se standardy a používá mírně nejnovější funkce, proto **prohlížeče musí být v souladu s vaším webem**. Navíc vzhledem k tomu, že existuje mnoho kampaní za _zabití_ IE6 ([IE6 no more](http://www.ie6nomore.com/), [kampaň MS](http://www.webmonkey.com/2011/03/microsoft-kicks-off-campaign-to-kill-internet-explorer-6/)), můžete se v dnešní době vyhnout plýtvání časem s testováním IE! Osobní zkušenosti s IE6 ----------------------- V letech 2009-2012 jsem pracoval ve společnosti, která používala IE6 jako *oficiální jediný povolený prohlížeč*. Musel jsem implementovat intranetový web pouze pro IE6. Rozhodl jsem se respektovat webový standard, ale používat podmnožinu (HTML/CSS/JS), kterou IE6 umožňuje. Bylo to těžké, ale když firma přešla na IE8, web byl stále dobře vykreslený, protože jsem pro kontrolu kompatibility s webovým standardem použil Firefox a [firebug][FB] ;). [Klára]: 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 [Graceful degradation]: http://www.w3.org/wiki/Graceful_degredation_versus_progressive_enhancement [Progresivní vylepšení]: http://en.wikipedia.org/wiki/Progressive_enhancement [Nenápadný JavaScript]: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript [Co by měl vývojář webu zvážit?]: https://softwareengineering.stackexchange.com/questions/46716
Komentáře (20)

Pomocí této funkce donutíte IE skrýt otravné tlačítko kompatibility prohlížeče v adresním řádku:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Komentáře (8)