Aký je rozdiel, ak jedna webová stránka začína slovom
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
a Ak sa stránka začína slovom
<!DOCTYPE html>
<html>
<head>
<!-- without X-UA-Compatible meta -->
Ak v tom nie je žiadny rozdiel, predpokladám, že môžem jednoducho ignorovať metahlavičku X-UA-Compatible
, pretože chcem, aby sa stránka zobrazovala v najštandardnejšom režime vo všetkých verziách IE.
Aktualizácia z októbra 2015
X-UA-Compatible
na svojej stránke? vzhľadom na zmeny, ktoré Microsoft vykonal vo svojich prehliadačoch (viac o nich nižšie).
V závislosti od toho, aké prehliadače Microsoft podporujete, nemusíte naďalej používať značku X-UA-Compatible
. Ak potrebujete podporovať IE9 alebo IE8, odporúčam používať túto značku. Ak podporujete len najnovšie prehliadače (IE11 a/alebo Edge), potom by som zvážil úplné zrušenie tejto značky. Ak používate Twitter Bootstrap a potrebujete eliminovať varovania validácie, tento tag sa musí objaviť v určenom poradí. Ďalšie informácie nájdete nižšie:Metaznačka X-UA-Compatible
umožňuje autorom webových stránok vybrať, v akej verzii prehliadača Internet Explorer sa má stránka vykresliť. IE11 vykonal zmeny v týchto režimoch; pozrite si nižšie uvedenú poznámku k IE11. Prehliadač Microsoft Edge, ktorý nahradil IE11, rešpektuje metaznačku X-UA-Compatible
len za určitých okolností. Pozri poznámku k prehliadaču Microsoft Edge uvedenú nižšie.
Podľa spoločnosti Microsoft by sa pri používaní značky X-UA-Compatible
mala nachádzať čo najvyššie v hlavičke dokumentu:
Ak používate tag X-UA-Compatible META, chcete ho umiestniť čo najbližšie k hornej časti stránky'HEAD. Internet Explorer začne interpretovať značky pomocou najnovšej verzie. Keď Internet Explorer narazí na značku X-UA-Compatible META, začne znova používať motor určenej verzie'. To je zásah do výkonu, pretože prehliadač sa musí zastaviť a znovu začať analyzovať obsah.
Tu sú vaše možnosti:
Internet Explorer podporuje niekoľko režimov kompatibility dokumentov, ktoré umožňujú rôzne funkcie a môžu ovplyvniť spôsob zobrazenia obsahu:
- Režim Edge prikazuje prehliadaču Internet Explorer zobrazovať obsah v najvyššom dostupnom režime. V aplikácii Internet Explorer 9 je to ekvivalentné režimu IE9. Ak by budúca verzia Internet Explorera podporovala vyšší režim kompatibility, stránky nastavené na režim edge by sa zobrazovali v najvyššom režime podporovanom touto verziou. Tie isté stránky by sa pri prezeraní v aplikácii Internet Explorer 9 stále zobrazovali v režime IE9. Internet Explorer podporuje niekoľko režimov kompatibility dokumentov, ktoré umožňujú rôzne funkcie a môžu ovplyvniť spôsob zobrazenia obsahu:
- Režim IE11 poskytuje najvyššiu dostupnú podporu pre zavedené a nové priemyselné štandardy vrátane HTML5, CSS3 a ďalších.
- Režim IE10 poskytuje najvyššiu dostupnú podporu pre zavedené a nové priemyselné štandardy vrátane HTML5, CSS3 a ďalších.
- Režim IE9 poskytuje najvyššiu dostupnú podporu pre zavedené a nové priemyselné štandardy vrátane HTML5 (pracovný návrh), špecifikácie W3C Cascading Style Sheets Level 3 (pracovný návrh), špecifikácie Scalable Vector Graphics (SVG) 1.0 a ďalších. [Poznámka redakcie: IE 9 nepodporuje animácie CSS3].
- Režim IE8 podporuje mnoho zavedených štandardov vrátane špecifikácie W3C Cascading Style Sheets Level 2.1 a rozhrania W3C Selectors API; poskytuje tiež obmedzenú podporu špecifikácie W3C Cascading Style Sheets Level 3 (Working Draft) a ďalších nových štandardov.
- Režim IE7 vykresľuje obsah, ako keby bol zobrazený v režime štandardov prehliadača Internet Explorer 7, bez ohľadu na to, či stránka obsahuje alebo neobsahuje smernicu <!DOCTYPE>.
- Režim Emulate IE9 povie prehliadaču Internet Explorer, aby použil smernicu <!DOCTYPE> na určenie spôsobu vykresľovania obsahu. Smernice v režime štandardov sa zobrazujú v režime IE9 a smernice v režime quirks sa zobrazujú v režime IE5. Na rozdiel od režimu IE9 režim Emulate IE9 rešpektuje smernicu <!DOCTYPE>.
- Režim Emulate IE8 povie prehliadaču Internet Explorer, aby použil smernicu <!DOCTYPE> na určenie spôsobu vykresľovania obsahu. Smernice v režime štandardov sa zobrazujú v režime IE8 a smernice v režime quirks sa zobrazujú v režime IE5. Na rozdiel od režimu IE8 režim Emulate IE8 rešpektuje smernicu <!DOCTYPE>.
- Režim Emulate IE7 povie prehliadaču Internet Explorer, aby použil smernicu <!DOCTYPE> na určenie spôsobu vykresľovania obsahu. Smernice v režime štandardov sa zobrazujú v režime štandardov Internet Explorera 7 a smernice v režime quirks sa zobrazujú v režime IE5. Na rozdiel od režimu IE7, režim Emulate IE7 rešpektuje smernicu <!DOCTYPE>. Pre mnohé webové lokality je to preferovaný režim kompatibility.
V režime IE5 sa obsah zobrazuje tak, ako keby ho v režime quirks zobrazoval Internet Explorer 7, čo je veľmi podobné spôsobu zobrazovania obsahu v prehliadači Microsoft Internet Explorer 5. POZNÁMKA k IE10: Od IE10 sa režim quirks správa inak ako v predchádzajúcich verziách prehliadača. V IE9 a starších verziách obmedzoval quirks mode webovú stránku na funkcie podporované IE5.5. V IE10 sa režim quirks prispôsobuje rozdielom špecifikovaným v špecifikácii HTML5. Osobne vždy volím metaznačku
http-equiv="X-UA-Compatible" content="IE=edge"
, pretože staršie verzie majú veľa chýb a nechcem, aby sa IE rozhodol prejsť do "režimu kompatibility" a zobrazoval moju stránku ako IE7 oproti IE8 alebo 9. Vždy uprednostňujem najnovšiu verziu IE. IE11 Z Microsoft: Počnúc IE11 je režim Edge preferovaným režimom dokumentu; predstavuje najvyššiu podporu moderných štandardov, akú má prehliadač k dispozícii. Na zapnutie režimu edge použite deklaráciu typu dokumentu HTML5:<!doctype html>
Režim Edge bol zavedený v aplikácii Internet Explorer 8 a bol k dispozícii v každej nasledujúcej verzii. Všimnite si, že funkcie podporované režimom edge sú obmedzené na funkcie podporované konkrétnou verziou prehliadača, ktorý vykresľuje obsah. Počnúc IE11 sú režimy dokumentov zastarané a nemali by sa už používať, s výnimkou dočasných prípadov. Uistite sa, že stránky, ktoré sa spoliehajú na staršie funkcie a režimy dokumentov, sú aktualizované tak, aby odrážali moderné štandardy. Ak sa musíte zamerať na konkrétny režim dokumentu, aby vaša stránka fungovala, kým ju prepracujete na podporu moderných štandardov a funkcií, uvedomte si, že používate prechodnú funkciu, ktorá nemusí byť dostupná v budúcich verziách. Ak v súčasnosti používate hlavičku x-ua-compatible na zacielenie na starší režim dokumentu, je možné, že vaša stránka nebude odrážať najlepšie skúsenosti dostupné v IE11. Microsoft Edge (náhrada za Internet Explorer dodávaná so systémom Windows 10) Informácie o metaznačkeX-UA-Compatible
pre "Edge" verziu IE. Od spoločnosti Microsoft: Zavedenie "živého" režimu dokumentu Edge Ako sme oznámili v auguste 2013, od IE11 vyraďujeme režimy dokumentov. Vďaka našim najnovším aktualizáciám platformy sa potreba starších režimov dokumentov obmedzuje predovšetkým na staršie webové aplikácie pre podniky. Vďaka novým architektonickým zmenám budú tieto staršie režimy dokumentov izolované od zmien v "živom" režime Edge, čo pomôže zaručiť oveľa vyššiu úroveň kompatibility pre zákazníkov, ktorí sú na týchto režimoch závislí, a pomôže nám ešte rýchlejšie napredovať vo vylepšeniach Edge. IE bude naďalej rešpektovať režimy dokumentov obsluhované intranetovými stránkami, stránkami na zozname Compatibility View a pri použití len s režimom Enterprise Mode. Verejné internetové stránky sa budú vykresľovať pomocou novej platformy režimu Edge (ignorujúc X-UA-Compatible). Naším cieľom je, aby Edge bol odteraz "živým" režimom dokumentov a aby sa do budúcnosti nezavádzali žiadne ďalšie režimy dokumentov. Vzhľadom na zmeny v prehliadači Microsoft Edge, ktorý už vo väčšine prípadov nepodporuje režimy dokumentov, má spoločnosť Microsoft k dispozícii nástroj na kontrolu vašej stránky a zistenie, či neobsahuje kód, ktorý nie je kompatibilný s prehliadačom Edge. Chrome=1 Informácie pre IE Existuje aj možnosťchrome=1
, ktorú môžete použiť alebo použiť spolu s jednou z vyššie uvedených možností, ako napr:<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
.chrome=1
je pre Google'Chrome Frame, ktorý je definovaný ako: Google Chrome Frame je doplnok prehliadača s otvoreným zdrojovým kódom. Používatelia, ktorí majú nainštalovaný tento doplnok, majú pri otváraní stránok v prehliadači prístup k otvoreným webovým technológiám Google Chrome'a rýchlemu JavaScriptovému jadru. Rámček Google Chrome Frame bez problémov vylepšuje prehliadanie v prehliadači Internet Explorer. Zobrazuje stránky s podporou Google Chrome Frame pomocou technológie vykresľovania Google Chrome, čím vám poskytuje prístup k najnovším funkciám HTML5, ako aj k výkonnostným a bezpečnostným funkciám Google Chrome bez toho, aby akokoľvek prerušil bežné používanie prehliadača. Keď je nainštalovaný Google Chrome Frame, web je jednoducho lepší bez toho, aby ste na to museli myslieť. Aby však tento doplnok fungoval, musíte v metaznačkeX-UA-Compatible
použiťchrome=1
. Viac informácií o Chrome Frame nájdete tu. Poznámka: Rámček Google Chrome Frame funguje len pre IE6 až IE9 a bol vyradený z používania 25. februára 2014. Viac informácií nájdete tu. Za odkaz ďakujeme @mck. Potvrdenie: HTML5: Stránka sa validuje pomocou W3 Validator len pri použití<meta http-equiv="X-UA-Compatible" content="IE=Edge">
. V prípade iných hodnôt vyhodí chybu:Prvok meta s atribútom http-equiv, ktorého hodnota je X-UA-Compatible, musí mať atribút content s hodnotou IE=edge.
Inými slovami, ak máteIE=edge,chrome=1
, nedôjde k validácii. Túto chybu úplne ignorujem, pretože moderné prehliadače tento riadok kódu jednoducho ignorujú. Ak musíte mať úplne platný kód, zvážte, či to chcete urobiť na úrovni servera nastavením hlavičky HTTP. Ako poznámku Microsoft uvádza:Ak sú odoslané oba tieto pokyny (meta a HTTP), prednosť má pred nastavením webového servera (hlavička HTTP) preferencia vývojára (prvok meta).
Viac informácií o tom, ako nastaviť hlavičku HTTP, nájdete v olibre's answer alebo bitinn's answer. XHTML Pri použití<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
nie je problém s validáciou, pokiaľ je tag správne uzavretý (t.j./>
vs>
). Twitter Bootstrap Túto značku dôrazne odporúča tím Bootstrap minimálne od roku 2014 a Bootlint, linter, ktorého autorom je tím twbs, naďalej vyhadzuje varovanie, ak je značka vynechaná. Linter rozlišuje medzi varovaniami a chybami, a preto možno závažnosť vynechania tohto tagu považovať za menšiu.Viac informácií o značke
X-UA-Compatible
nájdete na stránke Webová stránka definujúca kompatibilitu dokumentov spoločnosti Microsoft. Viac informácií o tom, čo IE podporuje, nájdete na caniuse.com. Viac informácií o požiadavkách na Twitter Bootstrap nájdete na stránke projektu bootlint wiki stránka.
Použite content=
"IE=edge,chrome=1"
Vynechajte ostatné X-UA-Compatible
režimy
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
--------------------------
javascript::JSON.parse()
v IE8 <!DOCTYPE html>
)Vašom HTML
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
IE=edge
znamená, že IE by mal používať najnovšiu (edge) verziu svojho vykresľovacieho jadrachrome=1
znamená, že IE by mal používať vykresľovacie jadro Chrome, ak je nainštalované
alebo lepšie v konfigurácii vášho webového servera: add_header X-UA-Compatible "IE=Edge,chrome=1";
}
Postoj spoločnosti Microsoft však nebol jasný. Iná stránka [MSDN neodporúča Edge mode][noEdge]:
Pretože režim Edge núti otvárať všetky stránky v režime štandardov, bez ohľadu na verziu Internet Explorera, môžete byť v pokušení používať ho pre všetky stránky zobrazované pomocou Internet Explorera. Nerobte to, pretože hlavička
<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" > **No... Vo zvyšku tejto odpovede uvádzam ďalšie vysvetlenia, prečo je použitie `content="IE=edge,chrome=1"` v produkcii dobrým postupom.** --------------------------------- História ------- Počas mnohých rokov (2000 až 2008) bol [podiel IE na trhu viac ako 80 %] [IEMS]. A IE **v6** sa považoval za *de facto* štandard (80 % až 97 % podiel na trhu v [2003][OneStat], [2004, 2005 a 2006][IE6] len pre IE6, väčší podiel na trhu so všetkými verziami IE). Keďže IE6 nerešpektoval [webové štandardy](http://en.wikipedia.org/wiki/Web_standards), vývojári **musel** testovať svoje webové stránky pomocou IE6. Táto situácia bola pre spoločnosť Microsoft (MS) výhodná, pretože vývojári webových stránok si museli **kupovať** produkty MS (napr. IE sa nedá používať bez zakúpenia systému Windows) a bolo výhodnejšie zostať v nesúlade (t. j. Microsoft sa chcel stať **štandardom** s vylúčením ostatných spoločností). Preto bolo mnoho webových stránok kompatibilných len s IE6, a keďže IE nebol kompatibilný s webovým štandardom, všetky tieto webové stránky sa v prehliadačoch kompatibilných so štandardmi nezobrazovali dobre. Čo je ešte horšie, [mnohé stránky vyžadovali iba IE](http://hintsforums.macworld.com/showthread.php?t=111479). V tomto čase však Mozilla začala vyvíjať Firefox, ktorý v čo najväčšej miere rešpektoval všetky webové štandardy (ostatné prehliadače boli implementované tak, aby vykresľovali stránky ako IE6). Keďže čoraz viac webových vývojárov chcelo využívať nové funkcie webových štandardov, čoraz viac webových stránok bolo podporovaných Firefoxom viac ako IE. Keď sa podiel IE na trhu znižoval, MS si uvedomil, že zostať nekompatibilný so štandardmi nie je dobrý nápad. Preto spoločnosť MS začala vydávať nové verzie IE (IE8/IE9/IE10), ktoré čoraz viac rešpektujú webové štandardy. --------------------------------- Problém webovej nekompatibility --------------------------- Problémom sú však všetky webové stránky navrhnuté pre IE6: Microsoft nemohol vydať nové verzie IE nekompatibilné s týmito starými webovými stránkami navrhnutými pre IE6. Namiesto toho, aby MS odvodil verziu IE, pre ktorú bola webová stránka navrhnutá, požiadal vývojárov, aby na svoje stránky pridali dodatočné údaje (`X-UA-Compatible`). IE6 sa používa aj v roku 2016 ------------------------- V súčasnosti sa IE6 stále používa [(0,7 % v roku 2016)][IE62014] (4,5 % v januári 2014) a niektoré internetové stránky sú stále kompatibilné len s IE6. Niektoré intranetové webové stránky/aplikácie sa testujú s použitím IE6. Niektoré intranetové webové stránky sú 100 % funkčné len v IE6. Tieto spoločnosti/oddelenia radšej odkladajú náklady na migráciu: iné priority, nikto už nevie, ako bola webová stránka/aplikácia implementovaná, majiteľ staršej webovej stránky/aplikácie skrachoval... Čína predstavuje [50 % používania IE6 v roku 2013](www.ie6countdown.com/), ale v nasledujúcich rokoch sa to môže zmeniť, keďže sa vysiela [čínska distribúcia Linuxu](http://www.canonical.com/content/canonical-and-chinese-standards-body-announce-ubuntu-collaboration). Buďte si istí svojimi webovými zručnosťami --------------------------------- Ak (sa snažíte) rešpektovať webový štandard, môžete jednoducho vždy použiť `http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"`. Ak chcete zachovať kompatibilitu so starými prehliadačmi, jednoducho sa vyhnite používaniu najnovších webových funkcií: použite podmnožinu podporovanú najstarším prehliadačom, ktorý chcete podporovať. Alebo ak chcete ísť ešte ďalej, môžete prijať koncepty ako [Graceful degradation], [Progressive enhancement] a [Unobtrusive JavaScript]. (Možno si radi prečítate aj článok [Čo by mal brať do úvahy vývojár webu?]). Nestarajte sa o najlepšie vykresľovanie verzie IE: to nie je vaša úloha, pretože prehliadače musia byť v súlade s webovými štandardmi. Ak je vaša stránka v súlade so štandardmi a používa mierne najnovšie funkcie, preto **prehliadače musia byť v súlade s vašou webovou stránkou**. Okrem toho, keďže existuje mnoho kampaní na _zabitie_ 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/)), v súčasnosti sa môžete vyhnúť plytvaniu časom s testovaním IE! Osobné skúsenosti s IE6 ----------------------- V rokoch 2009-2012 som pracoval v spoločnosti, ktorá používala IE6 ako *oficiálny jediný povolený prehliadač*. Musel som implementovať intranetovú webovú stránku len pre IE6. Rozhodol som sa rešpektovať webový štandard, ale používať podmnožinu (HTML/CSS/JS), ktorá je pre IE6 vhodná. Bolo to ťažké, ale keď spoločnosť prešla na IE8, webová stránka bola stále dobre vykreslená, pretože som použil Firefox a [firebug][FB] na kontrolu kompatibility s webovým štandardom ;) [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 [Progresívne vylepšovanie]: http://en.wikipedia.org/wiki/Progressive_enhancement [Nenápadný JavaScript]: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript [Čo by mal vývojár webu zvážiť?]: https://softwareengineering.stackexchange.com/questions/46716X-UA-Compatible
je podporovaná len od s Windows Internet Explorer 8. Namiesto toho spoločnosť Microsoft odporúča používať<!DOCTYPE html>
: Ak chcete, aby všetky podporované verzie Internet Explorera otvárali vaše stránky v režime štandardov, použite deklaráciu typu dokumentu HTML5 [...] Ako vysvetľuje Ricardo (v komentároch nižšie), na spustenie režimu štandardov možno použiť akýkoľvek DOCTYPE (HTML4, XHTML1...), nielen DOCTYPE HTML5's. Dôležité je, aby bol na stránke vždy DOCTYPE. Clara Onager si to dokonca všimla v staršej verzii Špecifikácia starších režimov dokumentov: Režim Edge je určený len na testovacie účely; nepoužívajte ho v produkčnom prostredí. Je to také mätúce, že Usman Y si myslel, že o tom hovorí Clara Onager: Príklad [...] je uvedený len na ilustračné účely; nepoužívajte ho v produkčnom prostredí.