Wat doet <meta http-equiv="X-UA-Compatible" content="IE=edge">?

Wat is het verschil als een webpagina begint met

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

en als pagina begint met

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

Als er geen verschil is, veronderstel ik dat ik de X-UA-Compatible meta header gewoon kan negeren, aangezien ik gewoon wil dat het in de meeste standaard modus wordt weergegeven in alle IE versies.

Oplossing

***Ik heb de laatste update van oktober 2015.

Dit antwoord werd enkele jaren geleden geplaatst en nu zou de vraag eigenlijk moeten zijn moet u zelfs maar overwegen om de X-UA-Compatible tag op uw site te gebruiken? met de wijzigingen die Microsoft heeft aangebracht in zijn browsers (meer daarover hieronder). Afhankelijk van welke Microsoft browsers u ondersteunt, hoeft u misschien niet door te gaan met het gebruik van de X-UA-Compatible tag. Als u IE9 of IE8 moet ondersteunen, dan zou ik aanraden om de tag te gebruiken. Als je alleen de nieuwste browsers ondersteunt (IE11 en/of Edge) dan zou ik overwegen om deze tag helemaal te laten vallen. Als je Twitter Bootstrap gebruikt en je wilt validatie waarschuwingen elimineren, dan moet deze tag in de aangegeven volgorde staan. Extra info hieronder:

De X-UA-Compatible meta tag laat web auteurs kiezen als welke versie van Internet Explorer de pagina moet worden gerenderd. IE11 heeft wijzigingen aangebracht in deze modes; zie de IE11 notitie hieronder. [Microsoft Edge][1], de browser die IE11 heeft vervangen, honoreert de X-UA-Compatible meta tag alleen in bepaalde omstandigheden. Zie de Microsoft Edge opmerking hieronder. Volgens Microsoft moet de X-UA-Compatible tag bij gebruik zo hoog mogelijk in de head van uw document staan:

Als u de X-UA-Compatible META-tag gebruikt, wilt u deze zo dicht mogelijk bovenaan de HEAD van de pagina's plaatsen. Internet Explorer begint markup te interpreteren met de laatste versie. Wanneer Internet Explorer de X-UA-Compatible META tag tegenkomt begint het opnieuw met de engine van de aangewezen versie's. Dit is een prestatieverlies omdat de browser moet stoppen en opnieuw beginnen met het analyseren van de inhoud. Hier zijn je opties:

  • "IE=edge"
  • "IE=11"
  • "IE=EmulerenIE11"
  • "IE=10"
  • "IE=EmulateIE10"
  • "IE=9"
  • "IE=EmulateIE9
  • "IE=8"
  • "IE=EmulateIE8"
  • "IE=7"
  • "IE=EmulateIE7"
  • "IE=5" Om te proberen te begrijpen wat elk betekent, zijn hier de definities van Microsoft: Internet Explorer ondersteunt een aantal document compatibiliteit modi die verschillende functies mogelijk te maken en kan invloed hebben op de manier waarop inhoud wordt weergegeven:
  • Edge-modus vertelt Internet Explorer om inhoud weer te geven in de hoogste modus die beschikbaar is. Met Internet Explorer 9, is dit gelijk aan IE9 modus. Als een toekomstige versie van Internet Explorer een hogere compatibiliteitsmodus zou ondersteunen, zouden pagina's die zijn ingesteld op de edge-modus worden weergegeven in de hoogste modus die door die versie wordt ondersteund. Dezelfde pagina's zouden nog steeds in IE9-modus verschijnen wanneer ze met Internet Explorer 9 worden bekeken. Internet Explorer ondersteunt een aantal documentcompatibiliteitsmodi die verschillende functies mogelijk maken en invloed kunnen hebben op de manier waarop inhoud wordt weergegeven:
  • IE11-modus biedt de hoogst beschikbare ondersteuning voor gevestigde en opkomende industriestandaarden, waaronder de HTML5, CSS3 en andere.
  • IE10-modus biedt de hoogst beschikbare ondersteuning voor gevestigde en opkomende industriestandaarden, waaronder HTML5, CSS3 en andere. IE9 biedt de hoogst beschikbare ondersteuning voor gevestigde en opkomende industriestandaarden, waaronder HTML5 (Working Draft), W3C Cascading Style Sheets Level 3 Specification (Working Draft), Scalable Vector Graphics (SVG) 1.0 Specification, en andere. [Opmerking van de redactie: IE 9 ondersteunt geen CSS3-animaties].
  • IE8 mode ondersteunt veel gevestigde standaarden, inclusief de W3C Cascading Style Sheets Level 2.1 Specification en de W3C Selectors API; het biedt ook beperkte ondersteuning voor de W3C Cascading Style Sheets Level 3 Specification (Working Draft) en andere opkomende standaarden.
  • IE7 mode rendert inhoud alsof het werd weergegeven in standards mode door Internet Explorer 7, of de pagina nu een directive bevat of niet.
  • Emulate IE9 mode vertelt Internet Explorer om de directive te gebruiken om te bepalen hoe de inhoud moet worden weergegeven. Standards mode directives worden weergegeven in IE9 mode en quirks mode directives worden weergegeven in IE5 mode. In tegenstelling tot IE9 mode, respecteert Emulate IE9 mode de directive.
  • Emulate IE8 mode vertelt Internet Explorer om de directive te gebruiken om te bepalen hoe inhoud moet worden gerenderd. Standards mode directives worden weergegeven in IE8 mode en quirks mode directives worden weergegeven in IE5 mode. In tegenstelling tot IE8 mode, respecteert Emulate IE8 mode de directive.
  • Emulate IE7 mode vertelt Internet Explorer om de directive te gebruiken om te bepalen hoe inhoud moet worden gerenderd. Standaarden modus directives worden weergegeven in Internet Explorer 7 standaarden modus en eigenaardigheden modus directives worden weergegeven in IE5 modus. In tegenstelling tot IE7 mode, respecteert Emulate IE7 mode de directive. Voor veel websites is dit de geprefereerde compatibiliteitsmodus.
  • IE5-modus rendert inhoud alsof ze in quirks-modus werd weergegeven door Internet Explorer 7, wat erg lijkt op de manier waarop inhoud werd weergegeven in Microsoft Internet Explorer 5. IE10 OPMERKING: Vanaf IE10 gedraagt de quirks-modus zich anders dan in eerdere versies van de browser. In IE9 en eerdere versies beperkte de quirks-modus de webpagina tot de functies die door IE5.5 werden ondersteund. In IE10, voldoet de quirks modus aan de verschillen gespecificeerd in de HTML5 specificatie. Persoonlijk kies ik altijd voor de http-equiv="X-UA-Compatible" content="IE=edge" meta tag, omdat oudere versies veel bugs hebben, en ik niet wil dat IE besluit om in "Compatibility mode" te gaan en mijn site als IE7 vs IE8 of 9 te tonen. Ik verkies altijd de laatste versie van IE. IE11 Van Microsoft: Vanaf IE11 is de edge-modus de voorkeursdocumentmodus; het vertegenwoordigt de hoogste ondersteuning voor moderne standaarden die beschikbaar is voor de browser. Gebruik de HTML5-documenttypeverklaring om de edge-modus in te schakelen: ` De edge-modus werd geïntroduceerd in Internet Explorer 8 en is in elke volgende release beschikbaar geweest. Merk op dat de functies die worden ondersteund door de edge mode beperkt zijn tot die welke worden ondersteund door de specifieke versie van de browser die de inhoud rendert. Vanaf IE11 zijn document modi verouderd en mogen niet langer worden gebruikt, behalve op een tijdelijke basis. Zorg ervoor dat sites die gebruik maken van verouderde functies en document modi worden aangepast aan de moderne standaarden. Als u een specifieke documentmodus moet gebruiken zodat uw site functioneert terwijl u hem herwerkt om moderne normen en functies te ondersteunen, wees u er dan van bewust dat u een overgangsfunctie gebruikt, een die misschien niet beschikbaar zal zijn in toekomstige versies. Als u momenteel de x-ua-compatible header gebruikt om een legacy document modus te targeten, is het'mogelijk dat uw site niet de beste ervaring weergeeft die beschikbaar is met IE11. ***[Microsoft Edge][3] (Vervanging voor Internet Explorer dat gebundeld wordt geleverd met Windows 10)*** Informatie overX-UA-Compatiblemeta tag voor de "Edge" versie van IE. [Van Microsoft][4]: **Invoering van de "levende" Edge-documentmodus** Zoals we in augustus 2013 hebben aangekondigd, zijn we vanaf IE11 bezig met het afschrijven van documentmodi. Met onze laatste platformupdates is de behoefte aan legacy documentmodi voornamelijk beperkt tot legacy webapps van ondernemingen. Met nieuwe architecturale wijzigingen zullen deze oudere documentmodi worden geïsoleerd van wijzigingen in de "levende" Edge-modus, wat zal helpen om een veel hoger niveau van compatibiliteit te garanderen voor klanten die afhankelijk zijn van deze modi en ons zal helpen om nog sneller verbeteringen aan te brengen in Edge. IE zal nog steeds document modi honoreren die worden geserveerd door intranet sites, sites op de Compatibility View lijst, en wanneer het alleen wordt gebruikt met Enterprise Mode. Publieke Internet sites zullen worden gerenderd met het nieuwe Edge mode platform (X-UA-Compatible negerend). Het is ons doel dat Edge vanaf nu de "living" documentmodus is en dat er geen verdere documentmodi meer zullen worden geïntroduceerd. Met de veranderingen in Microsoft Edge om niet langer document modes te ondersteunen in de meeste gevallen, heeft Microsoft een [tool][5] om uw site te scannen om te controleren en zien of het code heeft die niet compatibel is met Edge. ***Chrome=1 Info voor IE*** Er is ookchrome=1dat je kunt gebruiken of samen met een van de bovenstaande opties kunt gebruiken zoals:<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">.chrome=1is voor Google's Chrome Frame dat wordt gedefinieerd als: Google Chrome Frame is een open source browser plug-in. Gebruikers die de plug-in hebben geïnstalleerd, hebben toegang tot Google Chrome's open webtechnologieën en snelle JavaScript-engine wanneer ze pagina's in de browser openen. Google Chrome Frame verbetert naadloos uw browse-ervaring in Internet Explorer. Het geeft sites met Google Chrome Frame weer met behulp van de renderingtechnologie van Google Chrome, waardoor u toegang krijgt tot de nieuwste HTML5-functies en de prestatie- en beveiligingsfuncties van Google Chrome, zonder uw gebruikelijke browsergebruik op enige manier te onderbreken. Wanneer Google Chrome Frame is geïnstalleerd, wordt het web gewoon beter zonder dat u erover hoeft na te denken. Maar om die plug-in te laten werken moet jechrome=1gebruiken in deX-UA-Compatiblemeta tag. Meer info over Chrome Frame vindt u [hier][6]. **Note:** Google Chrome Frame werkt alleen voor [IE6 t/m IE9][13], en is met pensioen gegaan op 25 februari 2014. Meer info is te vinden [hier][7]. Met dank aan @mck voor de link. ***Validatie:*** **HTML5**: De pagina zal alleen valideren met de [W3 Validator][8] wanneer<meta http-equiv="X-UA-Compatible" content="IE=Edge">wordt gebruikt. Voor andere waarden geeft hij de foutmelding:Een meta-element met een http-equiv attribuut waarvan de waarde X-UA-Compatible is moet een content attribuut hebben met de waarde IE=edge.Met andere woorden, als jeIE=edge,chrome=1hebt zal het niet valideren. Ik negeer deze foutmelding volledig omdat moderne browsers deze regel code gewoon negeren. Als je volledig geldige code moet hebben, overweeg dan om dit op server niveau te doen door de HTTP header in te stellen. Als opmerking zegt Microsoft:Als beide instructies worden verzonden (meta en HTTP), heeft de voorkeur van de ontwikkelaar's (meta element) voorrang boven de instelling van de webserver (HTTP header).Zie [olibre's antwoord][9] of [bitinn's antwoord][10] voor meer details over het instellen van een HTTP header. **XHTML** Er is'geen probleem met validatie bij gebruik van<meta http-equiv="X-UA-Compatible" content="IE=Edge" />zolang de tag goed gesloten is (d.w.z./>vs>`). Twitter Bootstrap Deze tag wordt sinds ten minste 2014 sterk aanbevolen door het Bootstrap-team, en Bootlint, de linter die door het twbs-team is geauthenticeerd, blijft een warning gooien wanneer de tag wordt weggelaten. De linter maakt onderscheid tussen waarschuwingen en fouten, en als zodanig kan de ernst van het weglaten van deze tag worden beschouwd als klein.

    Voor meer informatie over X-UA-Compatible zie Microsoft's Website Defining Document Compatibility. Voor meer informatie over wat IE ondersteunt zie caniuse.com. Voor meer informatie over Twitter Bootstrap vereisten, zie het bootlint project wiki pagina.

Commentaren (31)

Gebruik content="IE=edge,chrome=1"   Sla andere X-UA-Compatible modi over

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

Geen compatibiliteitspictogram
De IE9 adresbalk toont niet de [Compatibiliteits Weergave knop][MSICON]
en de pagina toont ook niet een wirwar van misplaatste menu's, afbeeldingen en tekstvakken.

  • Features
    Deze meta tag is nodig om javascript::JSON.parse() aan te zetten op IE8
    (zelfs als `` aanwezig is)
  • Correctheid
    Rendering/uitvoering van moderne HTML/CSS/JavaScript is meer valide (mooier).
  • Performance
    De Trident rendering engine zou sneller moeten draaien in zijn edge mode.

    Gebruik

    In uw HTML




    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  • IE=edge betekent dat IE de laatste (edge) versie van zijn rendering engine moet gebruiken

  • chrome=1 betekent dat IE de Chrome rendering engine moet gebruiken, indien geïnstalleerd Of beter in de configuratie van uw webserver:
    (zie ook het RiaD's antwoord)

  • Apache zoals voorgesteld door pixeline

          BrowserMatch MSIE ie
          Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
    
        Header append Vary User-Agent
  • Nginx zoals voorgesteld door Stef Pause server {...

    ...

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

  • IIS (sinds v7)


Microsoft beveelt Edge mode aan sinds IE11

Zoals opgemerkt door Lynda (zie commentaar), beveelt de Compatibiliteitswijzigingen in IE11 Edge mode aan:

Vanaf IE11 is edge mode de voorkeursmodus voor documenten; het vertegenwoordigt de hoogste ondersteuning voor moderne standaarden beschikbaar voor de browser.

Maar het standpunt van Microsoft was niet duidelijk. Een andere [MSDN pagina raadde Edge mode][noEdge] niet aan:

Omdat de Edge-modus dwingt dat alle pagina's worden geopend in de standaarden-modus, ongeacht de versie van Internet Explorer, zou je in de verleiding kunnen komen om dit te gebruiken voor alle pagina's die bekeken worden met Internet Explorer. Doe dit niet, want de X-UA-Compatible header wordt alleen ondersteund vanaf met Windows Internet Explorer 8. In plaats daarvan raadde Microsoft aan `` te gebruiken: Als u wilt dat alle ondersteunde versies van Internet Explorer uw pagina's in standaardenmodus openen, gebruik dan de HTML5-documenttypeverklaring [...] Zoals Ricardo uitlegt (in de commentaren hieronder) kan elke DOCTYPE (HTML4, XHTML1...) gebruikt worden om Standards Mode te triggeren, niet alleen HTML5's DOCTYPE. Het belangrijkste is om altijd een DOCTYPE in de pagina te hebben. Clara Onager heeft zelfs in een oudere versie van Specifying legacy document modes opgemerkt: Edge mode is alleen bedoeld voor testdoeleinden; gebruik het niet in een productie omgeving. Het is zo verwarrend dat Usman Y dacht dat Clara Onager het had over: Het [...] voorbeeld wordt alleen ter illustratie gegeven; don't use it in a production environment.

<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" > **Wel... In de rest van dit antwoord geef ik meer uitleg waarom het gebruik van `content="IE=edge,chrome=1"` een goede praktijk is in productie.** --------------------------------- Geschiedenis ------- Gedurende vele jaren (2000 tot 2008), [IE marktaandeel was meer dan 80%][IEMS]. En IE **v6** werd beschouwd als een *de facto* standaard (80% tot 97% marktaandeel in [2003][OneStat], [2004, 2005 en 2006][IE6] alleen voor IE6, meer marktaandeel met alle IE-versies). Aangezien IE6 de [Web standaarden](http://en.wikipedia.org/wiki/Web_standards) niet respecteerde, **moesten** ontwikkelaars hun website testen met IE6. Die situatie was fantastisch voor Microsoft (MS), aangezien webontwikkelaars MS-producten moesten **kopen** (IE kan bijvoorbeeld niet worden gebruikt zonder Windows te kopen), en het winstgevender was om niet-compliant te blijven (m.a.w. Microsoft wilde **de** standaard worden met uitsluiting van andere bedrijven). Daarom waren veel sites alleen compatibel met IE6, en omdat IE niet compatibel was met de web standaard, werden al deze websites niet goed weergegeven op browsers die wel compatibel waren met de standaarden. Erger nog, [veel sites vereisten enkel IE] (http://hintsforums.macworld.com/showthread.php?t=111479). Op dat moment begon Mozilla echter met de ontwikkeling van Firefox, waarbij zoveel mogelijk alle webstandaarden werden gerespecteerd (andere browsers werden geïmplementeerd om pagina's weer te geven zoals gedaan door IE6). Aangezien meer en meer webontwikkelaars de nieuwe webstandaarden wilden gebruiken, werden meer en meer websites meer ondersteund door Firefox dan door IE. Toen het marktaandeel van IE afnam, besefte MS dat standaard incompatibel blijven geen goed idee was. Daarom begon MS nieuwe IE-versies uit te brengen (IE8/IE9/IE10) die meer en meer de webstandaarden respecteerden. --------------------------------- De web-incompatibele kwestie --------------------------- Maar het probleem zijn alle websites ontworpen voor IE6: Microsoft kon geen nieuwe IE-versies uitbrengen die incompatibel waren met deze oude IE6-ontworpen websites. In plaats van af te leiden welke IE-versie een website is ontworpen, verzocht MS ontwikkelaars extra gegevens (`X-UA-Compatible`) toe te voegen aan hun pagina's. IE6 wordt anno 2016 nog steeds gebruikt ------------------------- Tegenwoordig wordt IE6 nog steeds gebruikt [(0,7% in 2016)][IE62014] (4,5% in januari 2014), en sommige internetwebsites voldoen nog steeds aan IE6-only. Sommige intranetwebsite/applicaties worden getest met IE6. Sommige intranetwebsite zijn 100% functioneel alleen op IE6. Deze bedrijven/afdelingen stellen de migratiekosten liever uit: andere prioriteiten, niemand weet meer hoe de website/applicatie is geïmplementeerd, de eigenaar van de legacy website/applicatie ging failliet... China vertegenwoordigt [50% van IE6-gebruik in 2013](www.ie6countdown.com/), maar dat kan de komende jaren veranderen aangezien [Chinese Linux-distributie wordt uitgezonden](http://www.canonical.com/content/canonical-and-chinese-standards-body-announce-ubuntu-collaboration). Wees zelfverzekerd met uw webvaardigheden --------------------------------- Als je de web standaard (probeert te) respecteren, kan je gewoon altijd `http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"` gebruiken. Om compatibel te blijven met oude browsers, vermijdt u gewoon het gebruik van de nieuwste webfuncties: gebruik de subset die wordt ondersteund door de oudste browser die u wilt ondersteunen. Of als u nog verder wilt gaan, kunt u concepten gebruiken als [Graceful degradation], [Progressive enhancement] en [Unobtrusive JavaScript]. (Misschien vindt u het ook leuk om te lezen [Waar moet een webontwikkelaar rekening mee houden?]). Maak u niet druk over de beste IE-versie rendering: dit is niet uw taak aangezien browsers moeten voldoen aan de webstandaarden. Als uw site voldoet aan de standaarden en gebruik maakt van redelijk recente functies, dan moeten **browsers dus ook voldoen aan uw website**. Bovendien zijn er veel campagnes om IE6 _kill_ te maken ([IE6 no more](http://www.ie6nomore.com/), [MS campagne](http://www.webmonkey.com/2011/03/microsoft-kicks-off-campaign-to-kill-internet-explorer-6/)), zodat u tegenwoordig geen tijd meer hoeft te verspillen met IE testen! Persoonlijke IE6 ervaring ----------------------- In 2009-2012 werkte ik voor een bedrijf dat IE6 gebruikte als de *officiële enige toegestane browser*. Ik moest een intranet website implementeren voor alleen IE6. Ik besloot de webstandaard te respecteren maar de IE6-compatibele subset te gebruiken (HTML/CSS/JS). Het was moeilijk, maar toen het bedrijf overstapte op IE8, werd de website nog steeds goed weergegeven omdat ik Firefox en [firebug][FB] had gebruikt om de web-standaard compatibiliteit te controleren ;) [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 [Sierlijke afbraak]: http://www.w3.org/wiki/Graceful_degredation_versus_progressive_enhancement [Progressieve verbetering]: http://en.wikipedia.org/wiki/Progressive_enhancement [Onopvallend JavaScript]: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript [Waar moet een webontwikkelaar aan denken?]: https://softwareengineering.stackexchange.com/questions/46716
Commentaren (20)

Gebruik dit om IE te dwingen die vervelende browser compatibiliteitsknop in de adresbalk te verbergen:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Commentaren (8)