Warum sollte X-UA-kompatibler IE = Edge nicht mehr verwendet werden?

94

Ich habe in letzter Zeit mehrere Online-Kurse besucht und sehe immer noch, dass einige Kursleiter standardmäßig das folgende Meta-Tag oben in ihre Dokumente einfügen:

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

Der Gedanke scheint zu sein, dass dies genauso wichtig und nützlich ist wie <meta charset="UTF-8">.

Aber wieso?

Laut der Modern.ie-Dokumentation von Microsoft handelt es sich um eine "Best Practice", die "sicherstellt, dass Internet Explorer die neueste Engine verwendet". OK Fair genug.

Wenn Sie jedoch folgen dem Flussdiagramm auf MSDN es zeigt deutlich , dass ein Dokument ohne `X-UA-Compatible Informationen an den„Kompatibilitätsansicht“Präferenzen des Benutzers weitergeleitet werden, und wenn das ist dann nicht gesetzt nur die! DOCTYPE Erklärung folgen .

Mit anderen Worten, es sei denn, der Benutzer verfügt über einige Einstellungen für die Kompatibilitätsansicht. Der IE folgt einfach Ihrem! DOCTYPE und verwendet den neuesten Standardmodus Ihres Browsers zum Rendern. Es ist überhaupt keine X-UA-Compatible IE=EdgeAnweisung erforderlich .

Wie MSDN sagt: " Verwenden Sie die HTML5-Dokumenttypdeklaration, um den Kantenmodus zu aktivieren ".

Unter welchen Umständen wird also X-UA-Compatible IE=Edgebenötigt?

Chuck Le Butt
quelle

Antworten:

150

Wie aus der Antwort von @ David hervorgeht, gibt es kaum einen Grund, eine Website in <meta http-equiv="X-UA-Compatible" content="IE=edge">Ihre Webseiten aufzunehmen , sofern Sie keine Website in der Zone "Lokales Intranet" hosten, und (gemäß den Best-Practice-Empfehlungen von Microsoft ) absolut keinen Grund, sie in die Website aufzunehmen HTML. (Sie sollten es in Ihre Serverkonfiguration oder Site-Header einfügen - nicht in HTML selbst.)

Wenn Sie eine Verwendung in einem X-UA-Compatiblebeliebigen Projekt in Betracht ziehen , sollten Sie berücksichtigen, dass die Kompatibilitätsansicht nur IE8, 9 und 10 betrifft. Sie wurde nur in IE8 eingeführt und in IE11 deaktiviert.

Beachten Sie auch, dass IE11 derzeit die einzige offiziell unterstützte Version von IE ist . Alle älteren Versionen sollten als unsicher angesehen werden.

Wenn dies nicht Grund genug war, Sie davon zu überzeugen, es nicht zu verwenden, denken<!DOCTYPE Sie daran, dass Microsoft angibt, dass IE8 und höher bereits automatisch im Standardmodus rendern, wenn a vorhanden ist , was es noch sinnloser macht.

Sie können selbst sehen, welchen Ablauf der IE benötigt, um zu entscheiden, welcher Dokumentmodus verwendet werden soll:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Wie Sie sehen können, werden die X-UA-CompatibleEinstellungen des Benutzers "Kompatibilitätsansicht" überprüft , wenn kein Meta-Tag oder HTTP-Header vorhanden ist. Wenn der Benutzer keine für Ihre Website hat, prüft der IE, ob eine <!DOCTYPEDeklaration vorliegt. Wenn es einen findet, verwendet es automatisch den neuesten Standardmodus (auch bekannt als "EmulateIEx"). Wenn dies nicht der Fall ist, wird der Quirks-Modus wiederhergestellt.

Noch mehr Gründe, warum Sie das Meta-Tag "X-UA-kompatibel" von Microsoft selbst nicht verwenden sollten (Hervorhebung von mir):

Wenn Internet Explorer auf das X-UA-kompatible META-Tag stößt, wird die Engine der angegebenen Version erneut verwendet. Dies ist ein Leistungseinbruch, da der Browser die Analyse des Inhalts stoppen und neu starten muss.

Mit anderen Worten, es verlangsamt das Rendern der ersten Seite

Die X-UA-kompatible Direktive ist ein Tool, mit dem Anwendungen in der neuesten Internet Explorer-Version arbeiten können, während Aktualisierungen an der Anwendung vorgenommen werden .

Es wurde immer nur für den vorübergehenden Gebrauch entwickelt.

Die beste Vorgehensweise ist ein X-UA-kompatibler HTTP-Header . Durch Hinzufügen der Direktive zum Antwortheader wird Internet Explorer mitgeteilt, welche Engine verwendet werden soll, bevor mit dem Parsen von Inhalten begonnen wird. Dies muss auf dem Server der Website konfiguriert werden.

Mit anderen Worten, es gibt bessere Möglichkeiten, X-UA-kompatibel zu implementieren, wenn Sie es unbedingt benötigen.

Ab dem 12. Januar 2016 erhält nur die aktuellste Version von Internet Explorer, die für ein unterstütztes Betriebssystem verfügbar ist, technischen Support und Sicherheitsupdates. Internet Explorer 11 ist die letzte Version von Internet Explorer und wird weiterhin Sicherheitsupdates, Kompatibilitätskorrekturen und technischen Support unter Windows 7, Windows 8.1 und Windows 10 erhalten .

IE11 ist die einzige offiziell unterstützte Version von IE .

Der einzige Grund, das X-UA-CompatibleMeta-Tag in Ihr HTML aufzunehmen, bestand darin, die Einstellungen eines Benutzers für die "Kompatibilitätsansicht" in IE8, 9 und 10 für Ihre Website zu überschreiben. In fast allen Fällen hat der Benutzer diese Einstellungen nicht geändert (warum sollten sie das tun?), Und jetzt werden diese Browser nicht einmal mehr unterstützt.

Kurzum: Dieser Tag hat ausgedient.

Chuck Le Butt
quelle
17
Diese Flussdiagramme sind fantastisch.
Bennettp123
9
Nur eine Anmerkung: Ab heute (16.10.2015) ist die Kompatibilitätsschaltfläche in IE11 zwar nicht mehr vorhanden, kann jedoch weiterhin im Menü "Einstellungen" aktiviert werden, sodass sie weiterhin als Möglichkeit vorhanden ist. Wir verwenden es heute, weil unsere webbasierte Software in Unternehmens-Intranets verwendet wird, die über Legacy-Systeme verfügen, für deren Funktion der Kompatibilitätsmodus erforderlich ist. Deshalb müssen wir das umgehen. Toller Tipp zum HTTP-Header, danke dafür!
Doug Johnson
1
Da es weiterhin möglich ist, die Kompatibilitätsansicht in IE11 zu aktivieren, und Unternehmensclients dies tun, ist der Header / das Tag weiterhin nützlich. Ich kann sehen, warum der HTTP-Header überlegen ist, aber wenn sich das Tag ganz am Anfang des DOM befindet, wird wenig Schaden angerichtet, und zwar nur in Browsern, die nicht im Edge-Modus gestartet wurden. Als Bestimmung nur für gelegentliche Benutzer, die in der Kompatibilitätsansicht stecken bleiben, halte ich es nicht für eine schlechte Praxis, das Tag zu verwenden (ganz oben in <head>).
Tom Boutell
2
@ChuckLeButt Oder ihr Administrator hat dies "für" sie über Gruppenrichtlinien getan. In Unternehmenssituationen ist dies immer noch eine Sache, bei der es für uns der größte Gewinn war, einen Weg zu finden, dies zu überschreiben.
Tom Boutell
2
@ChuckLeButt Ich verstehe Ihren Standpunkt und habe nicht das Windows-Fu, um ihm zu widersprechen ... und dennoch sagte uns unser Kunde, dass IE11 auf der ganzen Linie im Kompatibilitätsmodus war. Wie sie es bekommen haben, war nicht wirklich Wissen, das mit uns geteilt wurde. Es ist möglich, dass sie es tatsächlich die ganze Zeit auf einer expliziten Liste hatten.
Tom Boutell
18

Wenn der Benutzer eine Seite in der Zone "Lokales Intranet" durchsucht (z. B. in einem Unternehmensintranet), ist die "Kompatibilitätsansicht" standardmäßig aktiviert. In diesem Fall habe ich "X-UA-kompatibel" verwendet, um den IE zu zwingen, die neueste Engine zu verwenden.

David
quelle
Ja, das scheint eine gültige Verwendung zu sein, aber in dieser Situation möchten Sie es wahrscheinlich in die Serverkonfiguration oder in die Header der Site einfügen? stackoverflow.com/a/9338959/199700
Chuck Le Butt
1
Es gibt auch eine Änderung, die teilweise darauf zurückzuführen ist, dass Microsoft die Kompatibilitätsansicht ein wenig ablehnt. Wenn eine Domäne neben dem lokalen Intranet viele Subdomains und Anwendungen enthält, wird sie durch Hinzufügen der Kompatibilitätsansicht für eine Subdomain jetzt auf die GESAMTE Domain angewendet (bevor sie nur auf die bestimmte Subdomain angewendet wurde). Wenn Sie also nur eine Anwendung haben, für die dies möglicherweise erforderlich ist, sollten Sie dies für alle anderen tun, um Supportprobleme zu vermeiden.
Kilkenny
@ChuckLeButt, Header sind gut, solange Sie sich im Netzwerk befinden. Wenn ein Benutzer die Seite jedoch lokal speichern möchte, bleiben nur die eingebetteten <meta>Tags übrig . Aus diesem Grund empfiehlt es sich im Allgemeinen, wichtige Header auch als <meta>Tags zu replizieren .
Ravilov
1

Solange es auf "Edge" eingestellt ist, wird es als HTML5 validiert, und es wurde mir mitgeteilt, dass der IE die Seite nur dann neu rendert, wenn die Site sie bereits im Kompatibilitätsmodus gerendert hat. Das Einfügen in die Serverkonfiguration ( .htaccessusw.) ist jedoch besser als das Einfügen des HTML-Codes jeder Seite.

Michael McGinnis
quelle
0

Henri Sivonen machte eine sehr nützliche Referenz darüber, wie Browser den Rendering-Modus gewählt haben. Sie können alles dort lesen: https://hsivonen.fi/doctype/ .

JulienW
quelle
6
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert
Dethariel