Kakšna je razlika, če se ena spletna stran začne z
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
in Če se stran začne z
<!DOCTYPE html>
<html>
<head>
<!-- without X-UA-Compatible meta -->
Če ni razlik, domnevam, da lahko meta glavo X-UA-Compatible
preprosto prezrem, saj želim, da se v vseh različicah IE prikaže v najbolj standardnem načinu.
Oktober 2015 posodobitev
X-UA-Compatible
na svojem spletnem mestu? zaradi sprememb, ki jih je Microsoft uvedel v svojih brskalnikih (več o njih v nadaljevanju).
Glede na to, katere Microsoftove brskalnike podpirate, vam morda ne bo treba še naprej uporabljati oznake X-UA-Compatible
. Če morate podpirati IE9 ali IE8, priporočam uporabo te oznake. Če podpirate samo najnovejše brskalnike (IE11 in/ali Edge), bi razmislil o popolni opustitvi te oznake. Če uporabljate Twitter Bootstrap in morate odpraviti opozorila o preverjanju, mora biti ta oznaka prikazana v določenem vrstnem redu. Dodatne informacije spodaj:Metaoznaka X-UA-Compatible
omogoča avtorjem spletnih strani, da izberejo, v kateri različici brskalnika Internet Explorer naj se stran prikaže. V IE11 so se ti načini spremenili; glejte spodnjo opombo o IE11. [Microsoft Edge][1], brskalnik, ki je nadomestil IE11, upošteva meta oznako X-UA-Compatible
le v določenih okoliščinah. Oglejte si spodnjo opombo za Microsoft Edge.
Po mnenju Microsofta mora biti pri uporabi oznake X-UA-Compatible
čim višje v glavi dokumenta:
Če uporabljate oznako X-UA-Compatible META, jo želite postaviti čim bližje vrhu glave strani (HEAD). Internet Explorer začne razlagati oznake z uporabo najnovejše različice. Ko Internet Explorer naleti na oznako X-UA-Compatible META, začne znova uporabljati motor določene različice. To vpliva na zmogljivost, saj se mora brskalnik ustaviti in znova začeti analizirati vsebino. Tu so 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" Da bi razumeli, kaj pomeni posamezna opredelitev, so na voljo opredelitve, ki jih je pripravil Microsoft: Internet Explorer podpira več načinov združljivosti dokumentov, ki omogočajo različne funkcije in lahko vplivajo na način prikazovanja vsebine:
- Način Edge pove brskalniku Internet Explorer, da vsebino prikaže v najvišjem razpoložljivem načinu. V brskalniku Internet Explorer 9 je to enakovredno načinu IE9. Če bi prihodnja izdaja Internet Explorerja podpirala višji način združljivosti, bi bile strani, nastavljene na način edge, prikazane v najvišjem načinu, ki ga podpira ta različica. Te iste strani bi bile še vedno prikazane v načinu IE9, če bi si jih ogledovali z Internet Explorerjem 9. Internet Explorer podpira več načinov združljivosti dokumentov, ki omogočajo različne funkcije in lahko vplivajo na način prikaza vsebine:
- Način IE11 zagotavlja najvišjo možno podporo uveljavljenim in novim industrijskim standardom, vključno s standardi HTML5, CSS3 in drugimi.
- Način IE10 zagotavlja najvišjo možno podporo uveljavljenim in nastajajočim industrijskim standardom, vključno s standardi HTML5, CSS3 in drugimi.
- Način IE9 zagotavlja najvišjo možno podporo uveljavljenim in nastajajočim industrijskim standardom, vključno s standardi HTML5 (delovni osnutek), specifikacijo W3C Cascading Style Sheets Level 3 (delovni osnutek), specifikacijo Scalable Vector Graphics (SVG) 1.0 in drugimi. [Opomba urednika: IE 9 ne podpira animacij CSS3].
- Način IE8 podpira številne uveljavljene standarde, vključno s specifikacijo W3C Cascading Style Sheets Level 2.1 Specification in W3C Selectors API; zagotavlja tudi omejeno podporo specifikaciji W3C Cascading Style Sheets Level 3 Specification (Working Draft) in drugim novim standardom.
- Način IE7 prikazuje vsebino, kot da bi jo Internet Explorer 7 prikazal v standardnem načinu, ne glede na to, ali stran vsebuje direktivo <!DOCTYPE> ali ne.
- Način Emulate IE9 pove brskalniku Internet Explorer, da uporabi direktivo <!DOCTYPE> za določitev načina upodabljanja vsebine. Direktive v načinu standardov se prikažejo v načinu IE9, direktive v načinu quirks pa se prikažejo v načinu IE5. Za razliko od načina IE9 način Emulate IE9 upošteva direktivo <!DOCTYPE>.
- Način Emulate IE8 pove brskalniku Internet Explorer, da uporabi direktivo <!DOCTYPE> za določanje načina prikazovanja vsebine. V načinu IE8 se prikažejo direktive v načinu Standards Mode, v načinu IE5 pa direktive v načinu Quirks Mode. Za razliko od načina IE8 način Emulate IE8 upošteva direktivo <!DOCTYPE>.
- Način Emulate IE7 pove brskalniku Internet Explorer, da uporabi direktivo <!DOCTYPE> za določanje načina prikazovanja vsebine. Direktive standardnega načina se prikažejo v standardnem načinu Internet Explorerja 7, direktive načina quirks pa se prikažejo v načinu IE5. Za razliko od načina IE7 način Emulate IE7 upošteva direktivo <!DOCTYPE>. Za številna spletna mesta je to prednostni način združljivosti.
Način posnemanja IE5 prikazuje vsebino, kot da bi jo Internet Explorer 7 prikazal v načinu quirks, kar je zelo podobno načinu prikazovanja vsebine v brskalniku Microsoft Internet Explorer 5. IE10 OPOMBA: Od različice IE10 se način quirks obnaša drugače kot v prejšnjih različicah brskalnika. V IE9 in prejšnjih različicah je način quirks omejil spletno stran na funkcije, ki jih je podpiral IE5.5. V IE10 je način quirks skladen z razlikami, določenimi v specifikaciji HTML5. Osebno vedno izberem meta oznako
http-equiv="X-UA-Compatible" content="IE=edge"
, saj imajo starejše različice veliko napak in ne želim, da bi se IE odločil za "način združljivosti" in moje spletno mesto prikazal kot IE7 proti IE8 ali 9. Vedno imam raje najnovejšo različico IE. IE11 Iz Microsoft: Od IE11 dalje je prednostni dokumentni način Edge mode; predstavlja najvišjo podporo sodobnim standardom, ki je brskalniku na voljo. Za omogočanje načina edge mode uporabite deklaracijo tipa dokumenta HTML5:<!doctype html>`` Način Edge je bil uveden v brskalniku Internet Explorer 8 in je bil na voljo v vsaki naslednji izdaji. Upoštevajte, da so funkcije, ki jih podpira način edge, omejene na tiste, ki jih podpira določena različica brskalnika, ki izrisuje vsebino. Od IE11 so načini dokumentov zastareli in se ne smejo več uporabljati, razen začasno. Zagotovite posodobitev spletnih mest, ki temeljijo na starejših funkcijah in načinih dokumentov, da bodo ustrezala sodobnim standardom. Če se morate osredotočiti na določen način dokumenta, da bo vaše spletno mesto delovalo, medtem ko ga boste predelali, da bo podpiralo sodobne standarde in funkcije, se zavedajte, da uporabljate prehodno funkcijo, ki morda ne bo na voljo v prihodnjih različicah. Če trenutno uporabljate glavo x-ua-compatible za usmerjanje na starejši način dokumenta, je mogoče, da vaše spletno mesto ne bo odražalo najboljše izkušnje, ki je na voljo v IE11. ***[Microsoft Edge][3] (zamenjava za Internet Explorer, ki je priložena sistemu Windows 10)*** Informacije o meta oznaki
X-UA-Compatibleza različico IE "Edge". [Iz Microsofta][4]: Edge: > **Predstavitev "živega" dokumentnega načina Edge** Kot smo napovedali avgusta 2013, z začetkom uporabe IE11 ukinjamo dokumentne načine. Z našimi najnovejšimi posodobitvami platforme je potreba po starejših načinih dokumentov omejena predvsem na starejše spletne aplikacije za podjetja. Z novimi arhitekturnimi spremembami bodo ti starejši načini dokumentov izolirani od sprememb v "živem" načinu Edge, kar bo pomagalo zagotoviti veliko višjo raven združljivosti za stranke, ki so odvisne od teh načinov, in nam pomagalo še hitreje napredovati pri izboljšavah v Edge. IE bo še vedno upošteval načine dokumentov, ki so na voljo na intranetnih spletnih mestih, spletnih mestih na seznamu Pogled združljivosti in samo pri uporabi z načinom Enterprise Mode. Javna spletna mesta bodo prikazana z novo platformo načina Edge (brez upoštevanja X-UA-Compatible). Naš cilj je, da je Edge od zdaj naprej "živeči" način dokumentov in da v prihodnje ne bomo uvedli nobenih drugih načinov dokumentov. Zaradi sprememb v brskalniku Microsoft Edge, ki v večini primerov ne podpira več dokumentnih načinov, ima Microsoft na voljo [orodje][5] za pregledovanje vašega spletnega mesta in ugotavljanje, ali vsebuje kodo, ki ni združljiva z brskalnikom Edge. ***Chrome=1 Informacije za IE*** Obstaja tudi možnost
chrome=1, ki jo lahko uporabite ali uporabite skupaj z eno od zgornjih možnosti, kot npr:
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">.
chrome=1je za Googlov okvir Chrome, ki je opredeljen kot: Google Chrome Frame je odprtokodni vtičnik za brskalnik. Uporabniki, ki imajo nameščen vtičnik, imajo pri odpiranju strani v brskalniku dostop do odprtih spletnih tehnologij Google Chrome in hitrega motorja JavaScript. Okvir Google Chrome Frame brez težav izboljša izkušnjo brskanja v brskalniku Internet Explorer. Spletne strani, ki jih podpira Google Chrome Frame, prikaže s tehnologijo upodabljanja Google Chrome, kar vam omogoča dostop do najnovejših funkcij HTML5 ter zmogljivosti in varnostnih funkcij Google Chrome, ne da bi pri tem kakor koli prekinili običajno uporabo brskalnika. Ko je nameščen Google Chrome Frame, je splet še boljši, ne da bi vam bilo treba o tem razmišljati. Da pa bo vtičnik deloval, morate v meta oznaki
X-UA-Compatibleuporabiti
chrome=1. Več informacij o okvirju Chrome Frame je na voljo [tukaj][6]. **Opomba:** Google Chrome Frame deluje le za [IE6 do IE9][13] in je bil upokojen 25. februarja 2014. Več informacij je na voljo [tukaj][7]. Hvala @mck za povezavo. ***Potrditev:*** **HTML5**: Stran se bo potrdila z uporabo [W3 Validator][8] le, če boste uporabili
<meta http-equiv="X-UA-Compatible" content="IE=Edge">. Pri drugih vrednostih bo vrgla napako:
Meta element z atributom http-equiv, katerega vrednost je X-UA-Compatible, mora imeti atribut content z vrednostjo IE=edge.Z drugimi besedami, če imate
IE=edge,chrome=1, se ne bo potrdila. To napako popolnoma zanemarim, saj sodobni brskalniki preprosto ignorirajo to vrstico kode. Če morate imeti popolnoma veljavno kodo, razmislite o tem na ravni strežnika z nastavitvijo glave HTTP. Microsoft pravi:
Če sta poslani obe navodili (meta in HTTP), ima razvijalčeva prednost (element meta) prednost pred nastavitvijo spletnega strežnika (glavo HTTP).Za več podrobnosti o tem, kako nastaviti glavo HTTP, glej [odgovor olibre][9] ali [odgovor bitinn][10]. **XHTML** Pri uporabi
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />ni težav s potrjevanjem, če je oznaka pravilno zaprta (tj.
/>proti
>`). Twitter Bootstrap Ekipa Bootstrap to oznako močno priporoča že vsaj od leta 2014, Bootlint, linter, ki ga je napisala ekipa twbs, pa še vedno vrže opozorilo, če je oznaka izpuščena. Linter razlikuje med opozorili in napakami, zato se lahko resnost izpustitve te oznake šteje za manjšo.Za več informacij o oznaki
X-UA-Compatible
glejte Microsoftovo spletno mesto Defining Document Compatibility. Za več informacij o tem, kaj podpira IE, glejte caniuse.com. Za več informacij o zahtevah za Twitter Bootstrap glejte projekt bootlint wiki stran.
Uporabite content=
"IE=edge,chrome=1"
Preskočite druge načine X-UA-Compatible
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
--------------------------
javascript::JSON.parse()
v IE8 <!DOCTYPE html>
)V vašem jeziku HTML
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
IE=edge
pomeni, da mora IE uporabljati najnovejšo (edge) različico svojega mehanizma za upodabljanjechrome=1
pomeni, da mora IE uporabljati Chromeov pogon za upodabljanje, če je nameščen
Pri konfiguraciji spletnega strežnika lahko uporabite naslednje možnosti: add_header X-UA-Compatible "IE=Edge,chrome=1";
}
Vendar stališče družbe Microsoft ni bilo jasno. Druga stran [MSDN ni priporočala načina Edge mode][noEdge]:
ker način Edge vse strani prisili, da se odprejo v standardnem načinu, ne glede na različico brskalnika Internet Explorer, vas morda mika, da bi ga uporabili za vse strani, ki jih pregledujete z Internet Explorerjem. Tega ne počnite, saj je naslov
<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" > **No... V nadaljevanju tega odgovora bom podal več pojasnil, zakaj je uporaba `content="IE=edge,chrome=1"` dobra praksa v produkciji.** --------------------------------- Zgodovina ------- Več let (od leta 2000 do 2008) je bil [tržni delež IE več kot 80 %] [IEMS]. In IE **v6** je veljal za *de facto* standard (80 % do 97 % tržnega deleža v [2003][OneStat], [2004, 2005 in 2006][IE6] samo za IE6, več tržnega deleža z vsemi različicami IE). Ker IE6 ni upošteval [spletnih standardov](http://en.wikipedia.org/wiki/Web_standards), so morali razvijalci svoje spletne strani testirati z uporabo IE6. Ta položaj je bil odličen za Microsoft (MS), saj so morali spletni razvijalci **kupovati** izdelke MS (npr. IE ni mogoče uporabljati brez nakupa operacijskega sistema Windows), poleg tega pa je bilo bolj dobičkonosno ostati neskladen (tj. Microsoft je želel postati **standard**, ki izključuje druga podjetja). Zato je bilo veliko spletnih mest skladnih samo z IE6, in ker IE ni bil skladen s spletnim standardom, vsa ta spletna mesta niso bila dobro prikazana v brskalnikih, skladnih s standardi. Še huje, [veliko spletnih mest je zahtevalo samo IE](http://hintsforums.macworld.com/showthread.php?t=111479). Vendar je Mozilla v tem času začela razvijati Firefox, ki je čim bolj upošteval vse spletne standarde (drugi brskalniki so bili uvedeni za prikazovanje strani, kot jih je prikazoval IE6). Ker je vse več spletnih razvijalcev želelo uporabljati nove funkcije spletnih standardov, je Firefox podpiral vse več spletnih strani kot IE. Ko se je tržni delež IE zmanjševal, je MS ugotovil, da ostati nezdružljiv s standardi ni dobra zamisel. Zato je začel izdajati nove različice IE (IE8/IE9/IE10), ki so vedno bolj upoštevale spletne standarde. --------------------------------- Vprašanje spletne nezdružljivosti --------------------------- Vendar so problem vsa spletišča, zasnovana za IE6: Microsoft ni mogel izdati novih različic IE, nezdružljivih s temi starimi spletišči, zasnovanimi za IE6. Namesto da bi ugotovil, za katero različico IE je bila spletna stran zasnovana, je od razvijalcev zahteval, da na svoje strani dodajo dodatne podatke (`X-UA-Compatible`). IE6 se leta 2016 še vedno uporablja ------------------------- Danes se IE6 še vedno uporablja [(0,7 % v letu 2016)][IE62014] (4,5 % januarja 2014), nekatera spletna mesta pa so še vedno skladna samo z IE6. Nekatera intranetna spletna mesta/aplikacije se testirajo z uporabo IE6. Nekatera intranetna spletna mesta so 100-odstotno funkcionalna samo v IE6. Ta podjetja/oddelki stroške migracije raje odložijo: druge prioritete, nihče več ne ve, kako je bilo spletno mesto/aplikacija izvedeno, lastnik starejšega spletnega mesta/aplikacije je šel v stečaj ... Kitajska predstavlja [50 % uporabe IE6 v letu 2013](www.ie6countdown.com/), vendar se lahko to v naslednjih letih spremeni, saj se [kitajska distribucija Linuxa razširja](http://www.canonical.com/content/canonical-and-chinese-standards-body-announce-ubuntu-collaboration). Bodite samozavestni pri svojih spletnih spretnostih --------------------------------- Če (poskušate) spoštovati spletni standard, lahko preprosto vedno uporabite `http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"`. Če želite ohraniti združljivost s starimi brskalniki, se preprosto izogibajte uporabi najnovejših spletnih funkcij: uporabite podmnožico, ki jo podpira najstarejši brskalnik, ki ga želite podpirati. Če želite iti še dlje, lahko uporabite koncepte, kot so [Graceful degradation], [Progressive enhancement] in [Unobtrusive JavaScript]. (Morda boste z veseljem prebrali tudi [Kaj mora upoštevati spletni razvijalec?]). Ne skrbite za najboljše prikazovanje različice IE: to ni vaša naloga, saj morajo biti brskalniki skladni s spletnimi standardi. Če je vaše spletno mesto skladno s standardi in uporablja zmerno najnovejše funkcije, morajo biti zato **bralniki skladni z vašim spletnim mestom**. Poleg tega je veliko kampanj za _zaboj_ IE6 ([IE6 no more](http://www.ie6nomore.com/), [MS kampanja](http://www.webmonkey.com/2011/03/microsoft-kicks-off-campaign-to-kill-internet-explorer-6/)), zato se danes lahko izognete zapravljanju časa s testiranjem IE! Osebne izkušnje z IE6 ----------------------- V letih 2009-2012 sem delal v podjetju, ki je uporabljalo IE6 kot *oficialni edini dovoljeni brskalnik*. Moral sem implementirati intranetno spletno mesto samo za IE6. Odločil sem se, da bom spoštoval spletni standard, vendar bom uporabil podmnožico, ki jo omogoča IE6 (HTML/CSS/JS). Bilo je težko, toda ko je podjetje prešlo na IE8, je bila spletna stran še vedno dobro prikazana, saj sem za preverjanje združljivosti s spletnim standardom uporabil Firefox in [firebug][FB] ;) [Clara]: 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 [Progresivna izboljšava]: http://en.wikipedia.org/wiki/Progressive_enhancement [Nevsiljiv JavaScript]: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript [Kaj mora upoštevati spletni razvijalec?]: https://softwareengineering.stackexchange.com/questions/46716X-UA-Compatible
podprt le od z brskalnikom Windows Internet Explorer 8. Namesto tega Microsoft priporoča uporabo<!DOCTYPE html>
: Če želite, da se odprejo vse podprte različice brskalnika Internet Explorer vaše strani v standardnem načinu, uporabite deklaracijo tipa dokumenta HTML5 [...] Kot pojasnjuje Ricardo (v komentarjih spodaj), lahko za sprožitev standardnega načina uporabite kateri koli DOCTYPE (HTML4, XHTML1 ...), ne le DOCTYPE HTML5. Pomembno je, da je na strani vedno DOCTYPE. Clara Onager je to celo opazila v starejši različici Določanje starejših načinov dokumentov: Edge mode is intended for testing purposes only; ne uporabljajte ga v produkcijskem okolju. To je tako zmedeno, da je Usman Y mislil, da govori Clara Onager: Primer [...] je naveden samo za ponazoritev; ne uporabljajte ga v produkcijskem okolju.