Was macht es für einen Unterschied, wenn eine Webseite mit
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
und wenn die Seite mit
<!DOCTYPE html>
<html>
<head>
<!-- without X-UA-Compatible meta -->
Wenn es keinen Unterschied gibt, kann ich den Meta-Header "X-UA-Compatible" einfach ignorieren, da ich nur möchte, dass die Seite in allen IE-Versionen im Standardmodus dargestellt wird.
Oktober 2015 Update
Mit dem Meta-Tag "X-UA-Compatible" können Webautoren auswählen, für welche Version des Internet Explorers die Seite gerendert werden soll. Der IE11 hat diese Modi geändert; siehe den IE11-Hinweis unten. [Microsoft Edge][1], der Browser, der IE11 ersetzt hat, beachtet das Meta-Tag "X-UA-Compatible" nur unter bestimmten Umständen. Siehe dazu den Hinweis zu Microsoft Edge weiter unten. Laut Microsoft sollte das Tag "X-UA-Compatible" so weit oben wie möglich im Kopf des Dokuments stehen:
Wenn Sie den X-UA-kompatiblen META-Tag verwenden, sollten Sie ihn so weit oben im HEAD der Seite wie möglich platzieren. Internet Explorer beginnt mit der Interpretation von Markup unter Verwendung der neuesten Version. Wenn Internet Explorer auf den X-UA-kompatiblen META-Tag stößt, beginnt er, die Engine der angegebenen Version zu verwenden. Dies führt zu Leistungseinbußen, da der Browser die Analyse des Inhalts anhalten und neu starten muss. Hier sind Ihre Optionen:
- "IE=edge"
- "IE=11"
- "IE=EmulateIE11"
- "IE=10"
- "IE=EmulateIE10"
- "IE=9"
- "IE=EmulateIE9
- "IE=8"
- "IE=EmulateIE8"
- "IE=7"
- "IE=EmulateIE7"
- "IE=5" Um zu verstehen, was die einzelnen Modi bedeuten, finden Sie hier die von Microsoft bereitgestellten Definitionen: Internet Explorer unterstützt eine Reihe von Dokumentenkompatibilitätsmodi, die verschiedene Funktionen aktivieren und die Art der Darstellung von Inhalten beeinflussen können:
- Der Edge-Modus weist Internet Explorer an, Inhalte im höchsten verfügbaren Modus anzuzeigen. Bei Internet Explorer 9 entspricht dies dem IE9-Modus. Wenn eine zukünftige Version von Internet Explorer einen höheren Kompatibilitätsmodus unterstützt, werden Seiten, die auf den Randmodus eingestellt sind, in dem höchsten von dieser Version unterstützten Modus angezeigt. Dieselben Seiten würden dann immer noch im IE9-Modus angezeigt, wenn sie mit Internet Explorer 9 betrachtet werden. Internet Explorer unterstützt eine Reihe von Dokumentenkompatibilitätsmodi, die verschiedene Funktionen aktivieren und sich auf die Art und Weise auswirken können, wie Inhalte angezeigt werden:
- Der IE11-Modus bietet die bestmögliche Unterstützung für etablierte und neue Industriestandards, einschließlich HTML5, CSS3 und andere.
- Der IE10-Modus bietet die bestmögliche Unterstützung für etablierte und neue Industriestandards, einschließlich HTML5, CSS3 und andere.
- Der IE9-Modus bietet die bestmögliche Unterstützung für etablierte und neue Industriestandards, einschließlich HTML5 (Working Draft), W3C Cascading Style Sheets Level 3 Specification (Working Draft), Scalable Vector Graphics (SVG) 1.0 Specification, und andere. [Anmerkung des Herausgebers: IE 9 unterstützt keine CSS3-Animationen].
- Der IE8-Modus unterstützt viele etablierte Standards, einschließlich der W3C Cascading Style Sheets Level 2.1 Specification und der W3C Selectors API; er bietet auch begrenzte Unterstützung für die W3C Cascading Style Sheets Level 3 Specification (Working Draft) und andere neue Standards.
- Der IE7-Modus rendert Inhalte so, als ob sie von Internet Explorer 7 im Standardmodus angezeigt würden, unabhängig davon, ob die Seite eine <!DOCTYPE>-Direktive enthält oder nicht.
Der Modus IE9 emulieren weist Internet Explorer an, die <!DOCTYPE>-Direktive zu verwenden, um zu bestimmen, wie der Inhalt wiedergegeben werden soll. Richtlinien für den Standardmodus werden im IE9-Modus angezeigt, Richtlinien für den Quirks-Modus im IE5-Modus. Im Gegensatz zum IE9-Modus respektiert der Modus "IE9 emulieren" die <!DOCTYPE>-Direktive. Der Modus "IE8 emulieren" weist Internet Explorer an, die <!DOCTYPE>-Direktive zu verwenden, um zu bestimmen, wie der Inhalt gerendert werden soll. Richtlinien für den Standardmodus werden im IE8-Modus angezeigt, während Richtlinien für den Quirks-Modus im IE5-Modus angezeigt werden. Im Gegensatz zum IE8-Modus respektiert der Modus "IE8 emulieren" die <!DOCTYPE>-Direktive. Der Modus IE7 emulieren weist Internet Explorer an, die <!DOCTYPE>-Direktive zu verwenden, um zu bestimmen, wie der Inhalt gerendert werden soll. Richtlinien für den Standardmodus werden im Standardmodus von Internet Explorer 7 angezeigt, während Richtlinien für den Quirks-Modus im IE5-Modus angezeigt werden. Im Gegensatz zum IE7-Modus respektiert der Modus IE7 emulieren die Richtlinie <!DOCTYPE>. Für viele Websites ist dies der bevorzugte Kompatibilitätsmodus. Im IE5-Modus wird der Inhalt so dargestellt, als ob er von Internet Explorer 7 im Quirks-Modus angezeigt würde, was der Art und Weise, wie der Inhalt in Microsoft Internet Explorer 5 angezeigt wurde, sehr ähnlich ist. IE10 HINWEIS: Ab IE10 verhält sich der Quirks-Modus anders als in früheren Versionen des Browsers. In IE9 und früheren Versionen beschränkte der Quirks-Modus die Webseite auf die von IE5.5 unterstützten Funktionen. Im IE10 entspricht der Quirks-Modus den in der HTML5-Spezifikation festgelegten Unterschieden. Ich persönlich wähle immer den Meta-Tag
http-equiv="X-UA-Compatible" content="IE=edge"
, da ältere Versionen viele Fehler haben und ich nicht möchte, dass der IE in den "Kompatibilitätsmodus" wechselt und meine Website als IE7 gegenüber IE8 oder 9 anzeigt. Ich bevorzuge immer die neueste Version des IE. IE11 Von Microsoft: Ab IE11 ist der Edge-Modus der bevorzugte Dokumentenmodus; er stellt die höchste Unterstützung für moderne Standards dar, die der Browser bietet. Verwenden Sie die HTML5-Dokumenttyp-Deklaration, um den Kantenmodus zu aktivieren:<!doctype html>
Der Randmodus wurde in Internet Explorer 8 eingeführt und ist in jeder nachfolgenden Version verfügbar. Beachten Sie, dass die vom Randmodus unterstützten Funktionen auf die Funktionen beschränkt sind, die von der jeweiligen Version des Browsers unterstützt werden, der den Inhalt rendert. Ab IE11 sind die Dokumentenmodi veraltet und sollten nicht mehr verwendet werden, es sei denn, sie werden nur vorübergehend eingesetzt. Stellen Sie sicher, dass Websites, die auf ältere Funktionen und Dokumentmodi angewiesen sind, auf moderne Standards umgestellt werden. Wenn Sie einen bestimmten Dokumentenmodus verwenden müssen, damit Ihre Website funktioniert, während Sie sie überarbeiten, um moderne Standards und Funktionen zu unterstützen, sollten Sie sich bewusst sein, dass Sie eine Übergangsfunktion verwenden, die in zukünftigen Versionen möglicherweise nicht mehr verfügbar ist. Wenn Sie derzeit den x-ua-kompatiblen Header verwenden, um einen veralteten Dokumentenmodus zu verwenden, ist es möglich, dass Ihre Website nicht die bestmögliche Darstellung im IE11 bietet. Microsoft Edge (Ersatz für Internet Explorer, im Lieferumfang von Windows 10 enthalten) Informationen zum Meta-Tag "X-UA-kompatibel" für die "Edge"-Version des IE. Von Microsoft: Einführung des "lebendigen" Edge-Dokumentenmodus Wie wir im August 2013 angekündigt haben, werden wir die Dokumentenmodi mit dem IE11 abschaffen. Mit unseren neuesten Plattform-Updates ist der Bedarf an Legacy-Dokumentenmodi hauptsächlich auf Legacy-Webanwendungen für Unternehmen beschränkt. Mit den neuen architektonischen Änderungen werden diese Legacy-Dokumentenmodi von den Änderungen im "lebenden" Edge-Modus isoliert, was dazu beiträgt, ein viel höheres Maß an Kompatibilität für Kunden zu gewährleisten, die auf diese Modi angewiesen sind, und uns dabei hilft, noch schneller mit Verbesserungen in Edge voranzukommen. Der IE wird weiterhin Dokumentmodi berücksichtigen, die von Intranetseiten, Seiten auf der Liste der Kompatibilitätsansicht und nur bei Verwendung des Unternehmensmodus verwendet werden. Öffentliche Internet-Sites werden mit der neuen Edge-Modus-Plattform gerendert (X-UA-Compatible wird ignoriert). Unser Ziel ist es, dass Edge von nun an der "lebende" Dokumentenmodus ist und in Zukunft keine weiteren Dokumentenmodi eingeführt werden. Mit den Änderungen in Microsoft Edge, die in den meisten Fällen keine Dokumentenmodi mehr unterstützen, bietet Microsoft ein Tool an, mit dem Sie Ihre Website scannen können, um zu prüfen, ob sie Code enthält, der nicht mit Edge kompatibel ist. Chrome=1 Info für IE Es gibt auchchrome=1
, das Sie verwenden können oder zusammen mit einer der oben genannten Optionen wie:<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
. chrome=1" steht für Googles Chrome Frame, der wie folgt definiert ist: Google Chrome Frame ist ein Open-Source-Browser-Plugin. Nutzer, die das Plug-in installiert haben, haben Zugriff auf die offenen Webtechnologien und die schnelle JavaScript-Engine von Google Chrome, wenn sie Seiten im Browser öffnen. Google Chrome Frame verbessert nahtlos Ihr Surferlebnis im Internet Explorer. Es zeigt Google Chrome Frame-fähige Websites mit der Rendering-Technologie von Google Chrome an und bietet Ihnen so Zugriff auf die neuesten HTML5-Funktionen sowie die Leistungs- und Sicherheitsfunktionen von Google Chrome, ohne Ihre gewohnte Browsernutzung in irgendeiner Weise zu beeinträchtigen. Wenn Google Chrome Frame installiert ist, wird das Web einfach besser, ohne dass Sie darüber nachdenken müssen. Damit das Plug-in funktioniert, müssen Sie im Meta-Tag "X-UA-Compatible" die Option "Chrome=1" verwenden. Weitere Informationen zu Chrome Frame finden Sie hier. Hinweis: Google Chrome Frame funktioniert nur für IE6 bis IE9 und wurde am 25. Februar 2014 eingestellt. Weitere Informationen finden Sie hier. Danke an @mck für den Link. Validierung: HTML5: Die Seite wird mit dem W3 Validator nur validiert, wenn<meta http-equiv="X-UA-Compatible" content="IE=Edge">
verwendet wird. Bei anderen Werten wird die Fehlermeldung ausgegeben: "Ein Meta-Element mit einem http-equiv-Attribut, dessen Wert X-UA-kompatibel ist, muss ein content-Attribut mit dem Wert IE=Edge haben". Mit anderen Worten, wenn SieIE=Edge,chrome=1
haben, wird es nicht validiert. Ich ignoriere diesen Fehler vollständig, da moderne Browser diese Codezeile einfach ignorieren. Wenn Sie unbedingt einen vollständig gültigen Code haben wollen, sollten Sie dies auf Serverebene tun, indem Sie einen HTTP-Header setzen. Microsoft sagt dazu: "Wenn beide Anweisungen gesendet werden (Meta- und HTTP-Element), hat die Präferenz des Entwicklers (Meta-Element) Vorrang vor der Einstellung des Webservers (HTTP-Header)." Siehe olibres Antwort oder bitinns Antwort für weitere Details zum Setzen eines HTTP-Headers. XHTML Es gibt keine Probleme mit der Validierung bei der Verwendung von<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
, solange der Tag richtig geschlossen ist (d.h./>
vs.>
). Twitter Bootstrap Dieses Tag wird vom Bootstrap-Team seit mindestens 2014 dringend empfohlen, und Bootlint, der vom twbs-Team erstellte Linter, gibt weiterhin eine Warnung aus, wenn das Tag ausgelassen wird. Der Linter unterscheidet zwischen Warnungen und Fehlern, so dass der Schweregrad des Weglassens dieses Tags als gering eingestuft werden kann.Weitere Informationen über "X-UA-kompatibel" finden Sie auf Microsofts Website Defining Document Compatibility. Weitere Informationen darüber, was IE unterstützt, finden Sie unter caniuse.com. Weitere Informationen zu den Anforderungen von Twitter Bootstrap finden Sie auf der Wiki-Seite des bootlint-Projekts.
Verwenden Sie content=
"IE=edge,chrome=1"
Andere X-UA-kompatible
Modi überspringen
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
--------------------------
javascript::JSON.parse()
auf IE8 zu aktivieren <!DOCTYPE html>
vorhanden ist)
Korrektheit In Ihrem HTML
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
IE=edge
bedeutet, dass der IE die neueste (edge) Version seiner Rendering-Engine verwenden sollchrome=1
bedeutet, dass der IE die Chrome-Rendering-Engine verwenden soll, falls installiert
Oder besser in der Konfiguration Ihres Webservers: add_header X-UA-Compatible "IE=Edge,chrome=1";
}
Die Position von Microsoft war jedoch nicht eindeutig. Eine andere [MSDN-Seite empfahl den Edge-Modus nicht][noEdge]:
Weil der Edge-Modus erzwingt, dass alle Seiten im Standardmodus geöffnet werden, unabhängig von der Version des Internet Explorers, könnten Sie versucht sein, diesen Modus für alle Seiten zu verwenden, die mit Internet Explorer angezeigt werden. Tun Sie dies nicht, da die Kopfzeile "X-UA-Compatible" nur ab mit Windows Internet Explorer 8 unterstützt wird. Stattdessen empfiehlt Microsoft die Verwendung von
<meta http-equiv="X-UA-Compatible" content="IE=7,9,10" > **Nun ja... Im Rest dieser Antwort gebe ich weitere Erklärungen, warum die Verwendung von `content="IE=edge,chrome=1"` eine gute Praxis in der Produktion ist. --------------------------------- Geschichte ------- Viele Jahre lang (2000 bis 2008) betrug der [IE-Marktanteil mehr als 80 %][IEMS]. Und IE **v6** galt als *de facto* Standard (80 % bis 97 % Marktanteil in [2003][OneStat], [2004, 2005 und 2006][IE6] nur für IE6, mehr Marktanteil bei allen IE-Versionen). Da der IE6 die [Web-Standards](http://en.wikipedia.org/wiki/Web_standards) nicht einhielt, **mussten** die Entwickler ihre Websites mit dem IE6 testen. Diese Situation war für Microsoft (MS) großartig, da Webentwickler MS-Produkte **kaufen** mussten (z. B. kann der IE nicht verwendet werden, ohne Windows zu kaufen), und es war gewinnbringender, nicht konform zu bleiben (d. h. Microsoft wollte **der** Standard werden und andere Unternehmen ausschließen). Daher waren viele Websites nur mit dem IE6 kompatibel, und da der IE nicht mit dem Webstandard konform war, wurden all diese Websites auf standardkonformen Browsern nicht gut dargestellt. Schlimmer noch, [viele Websites benötigten nur den IE] (http://hintsforums.macworld.com/showthread.php?t=111479). Zu dieser Zeit begann Mozilla jedoch mit der Entwicklung von Firefox, das so weit wie möglich alle Webstandards respektiert (andere Browser wurden implementiert, um Seiten wie der IE6 darzustellen). Da immer mehr Webentwickler die neuen Funktionen der Webstandards nutzen wollten, wurden immer mehr Websites von Firefox besser unterstützt als vom IE. Als der Marktanteil des IE immer geringer wurde, erkannte MS, dass es keine gute Idee war, standardinkompatibel zu bleiben. Daher begann MS, neue IE-Versionen (IE8/IE9/IE10) herauszubringen, die mehr und mehr die Webstandards respektieren. --------------------------------- Das Problem der Web-Inkompatibilität --------------------------- Das Problem sind jedoch alle Websites, die für den IE6 entwickelt wurden: Microsoft konnte keine neuen IE-Versionen veröffentlichen, die mit diesen alten, für den IE6 entwickelten Websites nicht kompatibel waren. Anstatt die IE-Version zu ermitteln, für die eine Website entwickelt wurde, forderte Microsoft die Entwickler auf, ihren Seiten zusätzliche Daten hinzuzufügen ("X-UA-Compatible"). Der IE6 wird auch 2016 noch verwendet ------------------------- Heutzutage wird der IE6 immer noch verwendet [(0,7 % im Jahr 2016)][IE62014] (4,5 % im Januar 2014), und einige Internet-Websites sind immer noch nur mit dem IE6 kompatibel. Einige Intranet-Websites/Anwendungen werden mit IE6 getestet. Einige Intranet-Websites funktionieren zu 100 % nur mit dem IE6. Diese Unternehmen/Abteilungen ziehen es vor, die Migrationskosten aufzuschieben: andere Prioritäten, niemand weiß mehr, wie die Website/Anwendung implementiert wurde, der Eigentümer der alten Website/Anwendung ist in Konkurs gegangen... China steht für [50 % der IE6-Nutzung im Jahr 2013] (www.ie6countdown.com/), aber das könnte sich in den nächsten Jahren ändern, da [die chinesische Linux-Distribution verbreitet wird] (http://www.canonical.com/content/canonical-and-chinese-standards-body-announce-ubuntu-collaboration). Seien Sie selbstbewusst mit Ihren Webkenntnissen --------------------------------- Wenn Sie den Webstandard respektieren (wollen), können Sie einfach immer `http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"` verwenden. Um die Kompatibilität mit alten Browsern aufrechtzuerhalten, vermeiden Sie es einfach, die neuesten Web-Funktionen zu verwenden: Verwenden Sie die Teilmenge, die von dem ältesten Browser unterstützt wird, den Sie unterstützen möchten. Wenn Sie noch weiter gehen wollen, können Sie Konzepte wie [Graceful degradation], [Progressive enhancement] und [Unobtrusive JavaScript] anwenden. (Lesen Sie auch [Was sollte ein Webentwickler beachten?]). Kümmern Sie sich nicht um die beste IE-Version: Das ist nicht Ihre Aufgabe, da die Browser mit den Webstandards konform sein müssen. Wenn Ihre Website standardkonform ist und einigermaßen aktuelle Funktionen verwendet, müssen **Browser mit Ihrer Website kompatibel sein**. Außerdem gibt es viele Kampagnen, um den IE6 zu _killen_ ([IE6 no more] (http://www.ie6nomore.com/), [MS-Kampagne] (http://www.webmonkey.com/2011/03/microsoft-kicks-off-campaign-to-kill-internet-explorer-6/)), so dass Sie heutzutage keine Zeit mehr mit IE-Tests verschwenden sollten! Persönliche IE6-Erfahrung ----------------------- In den Jahren 2009-2012 arbeitete ich für ein Unternehmen, das den IE6 als *offiziellen einzigen erlaubten Browser* verwendete. Ich musste eine Intranet-Website nur für den IE6 einrichten. Ich beschloss, den Webstandard zu respektieren, aber die IE6-fähige Teilmenge (HTML/CSS/JS) zu verwenden. Es war schwierig, aber als das Unternehmen auf IE8 umstieg, wurde die Website immer noch gut gerendert, weil ich Firefox und [firebug][FB] verwendet hatte, um die Kompatibilität mit dem Webstandard zu prüfen ;) [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 [Anmutige Verschlechterung]: http://www.w3.org/wiki/Graceful_degredation_versus_progressive_enhancement [Progressive Verbesserung]: http://en.wikipedia.org/wiki/Progressive_enhancement [Unaufdringliches JavaScript]: http://en.wikipedia.org/wiki/Unobtrusive_JavaScript [Was sollte ein Webentwickler beachten?]: https://softwareengineering.stackexchange.com/questions/46716<!DOCTYPE html>
: Wenn Sie möchten, dass alle unterstützten Versionen des Internet Explorer Ihre Seiten im Standardmodus öffnen, verwenden Sie die HTML5-Dokumenttypdeklaration [...] Wie [Ricardo] (https://stackoverflow.com/users/321555) (in den Kommentaren unten) erklärt, kann jeder DOCTYPE (HTML4, XHTML1...) verwendet werden, um den Standardmodus auszulösen, nicht nur der DOCTYPE von HTML5. Wichtig ist, dass immer ein DOCTYPE in der Seite vorhanden ist. Clara Onager hat sogar in einer älteren Version von Specifying legacy document modes festgestellt: Der Randmodus ist nur für Testzwecke gedacht; verwenden Sie ihn nicht in einer Produktionsumgebung. Es ist so verwirrend, dass Usman Y dachte, dass Clara Onager darüber sprach: Das [...] Beispiel dient nur zur Veranschaulichung; verwenden Sie es nicht in einer Produktionsumgebung.
Verwenden Sie diese Option, um den IE zu zwingen, die lästige Browser-Kompatibilitätsschaltfläche in der Adressleiste auszublenden:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />