Dokument- und Browsermodus von Internet Explorer 8

Als Microsoft mit der Planung für Internet Explorer 8 begann, stießen sie auf ein interessantes Problem. Sie waren bereit zuzugeben, dass der Internet Explorer Implementierungsfehler sowohl beim Rendern als auch beim Skripting aufwies. Nachdem sie das zugegeben hatten, hatten sie jedoch das Problem, das gemeinhin als „Don’t break the Internet“ bezeichnet wird. Microsoft konnte nicht wissen, wie viele Websites auf die Implementierungsfehler angewiesen waren, um korrekt zu funktionieren. Ihre endgültige Lösung des Problems war interessant:Internet Explorer 8 konnte in einer Vielzahl unterschiedlicher Modi ausgeführt werden. Die schiere Anzahl möglicher Modi ist ein wenig abschreckend, aber im Grunde lässt es sich auf zwei Arten reduzieren:Dokumentenmodus und Browsermodus.

Dokumentmodus

Der Dokumentmodus einer Seite bestimmt, auf welche Funktionen sie Zugriff hat. Dies bedeutet, dass es ein bestimmtes Maß an CSS-Unterstützung, eine bestimmte Anzahl von Funktionen für die Skripterstellung über JavaScript und eine bestimmte Art und Weise gibt, wie Dokumenttypen behandelt werden. Es gibt drei verschiedene Dokumentmodi:

  • Internet Explorer 5 – rendert die Seite im IE7-Quirks-Modus (auch bekannt als IE5-Modus). Neue Funktionen in IE8 sind nicht verfügbar.
  • Internet Explorer 7 – rendert die Seite im IE7-Standardmodus. Neue Funktionen in IE8 sind nicht verfügbar.
  • Internet Explorer 8 – rendert die Seite im IE8-Standardmodus. Neue Funktionen in IE8 sind verfügbar, sodass Sie auf die Selektoren-API, mehr CSS 2-Selektoren, einige CSS 3-Funktionen, HTML 5-Funktionen usw. zugreifen können. Im Wesentlichen erhalten Sie alles, was IE8 zu bieten hat.

Das Konzept des Dokumentmodus ist sehr wichtig, um zu verstehen, wie Internet Explorer 8 funktioniert.

Einen Dokumentmodus erzwingen

Sie können einen bestimmten Dokumentmodus erzwingen, indem Sie den X-UA-Compatible verwenden HTTP-Header oder mithilfe von <meta> Tag-Äquivalent:

<meta http-equiv="X-UA-Compatible" content="IE=<em>IEVersion</em>">

Es gibt mehrere verschiedene mögliche Werte für die IE-Version in diesem Feld und sie müssen nicht unbedingt den drei Dokumentmodi zugeordnet werden:

  • Rand – Versetzen Sie das Dokument immer in den neuesten verfügbaren Dokumentmodus. Doctype wird ignoriert. Für Internet Explorer 8 zwingt dies den Dokumentmodus immer auf IE8-Standards. Seien Sie vorsichtig, wenn Sie dies verwenden, denn wenn Internet Explorer 9 herauskommt, wird die Seite dadurch in den IE9-Standardmodus gezwungen
  • IE8 emulieren – Wenn ein Dokumenttyp vorhanden ist, stellen Sie den Dokumentmodus auf IE8-Standards und andernfalls auf IE5 ein.
  • IE7 emulieren – Wenn ein Dokumenttyp vorhanden ist, stellen Sie den Dokumentmodus auf IE7-Standards und andernfalls auf IE5 ein.
  • 8 – Dokumentmodus auf IE8-Standards erzwingen. Doctype wird ignoriert.
  • 7 – Dokumentmodus auf IE7-Standards erzwingen. Doctype wird ignoriert.
  • 5 – Dokumentmodus auf IE5 erzwingen. Doctype wird ignoriert.

Damit sich der Dokumentmodus beispielsweise wie in Internet Explorer 7 verhält, können Sie Folgendes verwenden:

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

Verwenden Sie Folgendes, um den IE7-Standardmodus unabhängig vom Dokumenttyp zu erzwingen:

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

Sie müssen keinen X-UA-Compatible haben Feldsatz auf Seiten. Wenn nicht vorhanden, ist der Standardwert EmulateIE8 .

Dokumentenmodus erkennen

Mit document.documentMode können Sie den Dokumentmodus für eine bestimmte Seite bestimmen Eigenschaft eine neue Funktion in Internet Explorer 8, die entweder 5, 7 oder 8 zurückgibt:

var mode = document.documentMode;

Die Verwendung dieser Eigenschaft kann Ihnen einen Hinweis darauf geben, wie sich die Seite verhalten wird. Diese Eigenschaft ist in allen Dokumentmodi verfügbar.

Browsermodus

Es gibt drei Browsermodi:Internet Explorer 8, Kompatibilität mit Internet Explorer 8 und Internet Explorer 7. Diese Modi wirken sich auf verschiedene Weise auf die Seite aus, insbesondere durch die Änderung des Dokumentmodus und der Zeichenfolge des Benutzeragenten. Standardmäßig ist der Browsermodus auf Internet Explorer 8 eingestellt.

Internet Explorer 8-Modus

Standardmäßig wird der Browser im Internet Explorer 8-Modus ausgeführt. Der Dokumentmodus wird wie folgt bestimmt:X-UA-Compatible ist auf EmulateIE8 eingestellt. Die User-Agent-Zeichenfolge für den Browser enthält sowohl die Internet Explorer-Version als auch die Trident-Version (Rendering-Engine). Zum Beispiel sehe ich das auf meinem Rechner:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Die meisten Seiten werden im Internet Explorer 8-Browsermodus ausgeführt.

Internet Explorer 8-Kompatibilitätsmodus

Wenn ein Endbenutzer neben der Schaltfläche „Aktualisieren“ auf die Schaltfläche „Kompatibilitätsansicht“ klickt, ändert sich der Browsermodus in „Kompatibilität mit Internet Explorer 8“. Der IE8-Kompatibilitätsmodus soll Internet Explorer 7 emulieren, daher wird der Dokumentmodus als X-UA-Compatible bestimmt ist auf EmulateIE7 eingestellt. Die User-Agent-Zeichenfolge für den Browser ändert die Internet Explorer-Version 7, belässt aber die Trident-Version (Rendering-Engine). Zum Beispiel sehe ich das auf meinem Rechner:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Die Änderung des User-Agent-Strings soll sicherstellen, dass jeder Code, der auf User-Agent-Sniffing angewiesen ist, weiterhin so funktioniert, als ob er in Internet Explorer 7 ausgeführt würde. Das Verlassen der Trident-Version gibt Entwicklern die Möglichkeit, festzustellen, dass es sich tatsächlich um Internet Explorer 8 handelt im Kompatibilitätsmodus.

Internet Explorer 7-Modus

Der Internet Explorer 7-Modus ist der merkwürdigste aller Browsermodi, da er anscheinend nur in den IE-Entwicklertools eine Option ist. Die Dokumentation besagt, dass dies verwendet wird, um Ihre Site in einer tatsächlichen Internet Explorer 7-Instanz zu testen, anstatt in Internet Explorer 8, das im Kompatibilitätsmodus ausgeführt wird. Internet Explorer 7 bestimmt den Dokumentmodus wie X-UA-Compatible ist auf EmulateIE7 eingestellt. Außerdem ignoriert dieser Modus X-UA-Compatible vollständig Daher gibt es keine Möglichkeit, den Dokumentmodus manuell zu ändern (Internet Explorer 7 berücksichtigte X-UA-Compatible nicht entweder). Dies bedeutet, dass im Gegensatz zu den anderen Browsermodi der Internet Explorer 7-Modus niemals einen Dokumentmodus des IE8-Standards haben kann. Außerdem wird der User-Agent-String geändert, sodass die Trident-Version nicht mehr verfügbar ist. Hier ist es auf meiner Box:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

Es scheint keine andere Möglichkeit zu geben, wie der Endbenutzer den Internet Explorer 7-Modus auslösen kann. Daher scheint es, dass dies nur ein praktisches Tool für Entwickler ist, das uns davon befreit, und daher scheint es ein Tool zu sein, das hauptsächlich von Entwicklern verwendet wird

Zusammenfassung

Internet Explorer 8 hat einige leistungsstarke und verwirrende Funktionen in Bezug auf seine Rendering- und Ausführungs-Engine. Dokumentmodi werden verwendet, um zu bestimmen, welche Funktionen für die Seite verfügbar sind, und dazu gehört, welche CSS-Funktionen und welche JavaScript-Funktionen aktiviert und verfügbar sind. Sie können dem Browser mitteilen, wie der Dokumentmodus bestimmt werden soll, indem Sie den Wert X-UA-Compatible angeben .

Browsermodi ändern, wie der Dokumentmodus bestimmt wird, wenn X-UA-Compatible ist nicht angegeben. Sie ändern auch den User-Agent-String, damit User-Agent-Sniffer nicht beschädigt werden. In freier Wildbahn sehen Sie nur den Internet Explorer 8-Modus und den Internet Explorer 8-Kompatibilitätsmodus. Der Internet Explorer 7-Modus scheint nur für Entwickler gedacht zu sein.