php-web-developer.de

Internet Explorer Kompatibilitätsmodus mit X-UA-Compatible erzwingen durch meta-tags oder Server-Header

von am Sa. 21. Mai 2011, unter Web

Viele kennen das Problem der verschiedenen Darstellungen und Renderings unterschiedlicher Internet Explorer-Versionen.

Um sicherzustellen, dass erstellte Webseiten auch noch in älteren Internet Explorer Versionen optimiert werden können, hatte Microsoft für den Internet Explorer 8 die Kompatibilitätsansicht eingeführt, welche die Rendering-Engine des Internet Explorer 7 annahm. Diese wird jedoch nur in Form einer zerrissenen Seite, standardmäßig neben der Adressleiste, bei unterschiedlicher Darstellung angezeigt. So ist es möglich, Fehler im Internet Explorer 7 ebenfalls darzustellen und den erstellten Code diesbezüglich zu verbessern.

Manchmal verschlimmern sich jedoch auch diverse Darstellungen des Explorers mit einer neuen Hauptversion, so dass es manchmal wünschenswert ist, eine alte Version zu emulieren.

Glücklicherweise hat Microsoft hierfür eine Option eingebaut, um den Darstellungsmodus des Browsers auf verschiedene Möglichkeiten durch die ausgelieferte Webseite zu manipulieren.

Dies wird auf folgender MSDN-Seite erläutert: http://msdn.microsoft.com/de-de/library/ms533876%28v=VS.85%29.aspx

Hierfür kann das http-equiv-Attribut mit dem Wert "X-UA-Compatible" für das meta-Tag verwendet werden.

Der Wert für das content-Attribut im meta-Tag kann derzeit folgende Zeichenketten verwenden:

  • IE=9
  • IE=8
  • IE=7
  • IE=5
  • IE=EmulateIE9
  • IE=EmulateIE8
  • IE=EmulateIE7
  • IE=Edge

Ohne das Emulate-Präfix werden die Seiten direkt im Modus der angegeben Version dargestellt.
Mit Präfix werden die Seiten bei gültiger DTD-Angabe (Document Type Definition im HTML-Kopf) mit der angegebenen Version dargestellt. Ansonsten wird ein Rückfall auf den IE5-Modus ausgeführt.
"Edge" erzwingt stets die höchstmögliche Darstellungsversion.

http-equiv wird, wie der Name schon vermuten lässt, meist verwendet, um HTTP-Header-Angaben für die Antwort zur Client-Anfrage zu setzen oder zu ersetzen.

Dementsprechend kann auch folgende Angabe vom HTTP-Server (hier für den Apache httpd ab Version 2.2) gesendet werden:

Header set X-UA-Compatible "IE=EmulateIE7"

Dies kann entweder in der Apache-Konfiguration, der VHost-Konfiguration oder bei Erlaubnis natürlich auch in der .htaccess angegeben werden.
Um die Anweisung in der .htaccess setzen zu dürfen, muss der jeweilige VHost oder das Verzeichnis zumindest den Wert "FileInfo" der Direktive AllowOverride besitzen.

Durch diese Anweisung wird das Modul zur Header-Manipulation vom Apache httpd geladen:

LoadModule headers_module modules/mod_headers.so

Das Erzwingen der Version 8 hilft beispielsweise beim Verwenden des Mootools-Frameworks in der legacy-Version 1.2, da der Internet Explorer 9 diese nicht mehr fehlerfrei laden kann und Version 1.2.5 nicht mit allen für Version 1.2-erstellte Javascript-Libraries kompatibel ist.
Auf Langzeit empfiehlt sich natürlich eine Aktualisierung und Fehlerbeseitigung älterer Dateien, um weiteren Problemen aus dem Weg zu gehen, doch wie so oft kann dies ebenfalls zu anderweitigen Problemen führen.

Die Darstellung der emulierten Versionen deckt sich manchmal nicht zu 100%. Kommt jedoch der Originaldarstellung oft nahe. dies bemerkt man beispielsweise bei Javascript und beim Positionieren per CSS.

Im Übrigen wird sicher auch einigen Leuten aufgefallen sein, dass auf verschiedenen Systemen der selben Betriebssystem-Version, den selben Fonts und der selben DPI-Einstellung und Grafikauflösung selbst die Darstellung von möglichst Web-konformen Internetseiten mit der exakt selben Minor-Version des Internet Explorers unterschiedlich sein kann. Nach meiner Erfahrung ist dies unter Anderem auch von den installierten System-Updates abhängig. Beim Internet Explorer ab Version 8 auch von Browser-Updates. Der Rest ist mir schleierhaft. :)


Hinterlasse einen Kommentar

(* diese Angaben werden benötigt)

Suchen Sie etwas Bestimmtes?

Benutzen Sie das Formular, um die Seite zu durchsuchen:

Finden Sie immer noch nicht das, was Sie suchen? Hnterlassen Sie mir eine Nachricht oder einen Kommentar und ich werde mich mit Ihnen in Verbindung setzen!