[IE] [TS 5] Arbeiten mit dem Kompatibilitätsmodus

Hier nun der 5. Teil meiner Blogserie zum Troubleshooting des Internet Explorers:

“Standards! Wenn der IE endlich mit Standards arbeiten würde, dann würde doch alles funktionieren!”

Mal wieder ein Zitat aus meinem großen Nutzerfeedback-Safe.

Sicherlich ist die Grundidee, die hinter diesem Kommentar steckt, richtig. ABER leider scheitert es an insb. zwei Dingen:

  1. Der Vergangenheit – also all den Webseiten und Internetanwendungen, die speziell für ältere (Stw. IE6) Internet Explorer Versionen erstellt worden sind und insb. Eigenarten dieser Version(en) nutzen, und
  2. dass sich nicht jeder Entwickler an die gültigen Standards hält [ja, basht mich, aber so ist es leider]

Denn die aktuellen IE Versionen halten sich schon wunderbar an die gültigen Standards [IE8 war der erste Browser, der vollständig HTML4 und CSS2.1 implementierte und IE9 ist konform mit den HTML5 Standards, die zum Erscheindatum eine entsprechende Reife hatten, vgl. hierzu auch den HTML5 Video Beitrag zu Standards und Normen meines Kollegen Kai Jägers] – allerdings muss man dazu verstehen, wann der IE die standardkonformen Rendering Engines verwendet, und wann der IE in einen der Kompatibilitätsmodi wechselt.

Grundregel: Wenn das HTML Dokument richtig definiert ist (korrekter DOCTYPE+Header), dann wird der dementsprechende Modus/Engine verwendet.

Ob sich der anschließende Code dann an den Standard hält ist wie in 2. schon erwähnt leider oft Glückssache, bzw. oftmals werden unzureichende sog. Browserweichen verwendet, die dann versuchen die Darstellung im IE “zurecht zu biegen”, obwohl dies eigentlich heute gar nicht mehr nötig ist/wäre (vgl. auch Daniel Melanchthon’s Blogpost ‘”Do No Evil” mit Browserweichen’).

Doch wie kann ein Benutzer oder ein Administrator für Abhilfe sorgen?

Der einfachste Weg führt über den “Kompatibilitätsbutton”

image

Oftmals hilft hier ein schneller Klick, der den IE in den IE7 Kompatibilitätsmodus versetzt um die Seite korrekt anzuzeigen. Diese Einstellung wird auch für die zukünftigen Besuche der Domäne (!!) gespeichert.
Für die Advanced User/Admins: das Setting wird in
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation\ClearableListData\UserFilter
gespeichert. Da dies ein Binary Value ist, ist jegliche manuelle Veränderung dieses Wertes auf eigene Gefahr und nicht supportet!

Jedoch gibt es über Group Policies die Möglichkeit das Kompatibilitätsverhalten zu steuern:

  1. Internet Explorer 7-Standards-Modus aktivieren(nicht empfohlen)
  2. Kompatibilitätsansicht deaktivieren(auch nicht empfohlen)
  3. Internet Explorer-Standards-Modus für lokales Intranet aktivieren(empfohlen, sofern sichergestellt ist, dass alle [wesentlichen] Anwendungen mit dem IE8/9 Standards-Mode korrekt funktionieren)
  4. Aktualisierte Websitelisten von Microsoft einbeziehen(empfohlen, da hier die wichtigsten Webseiten gepflegt werden)
  5. Richtlinienliste von Internet Explorer 7-Sites verwenden(bei bekannten Webseiten zu empfehlen, insb. bei LOB oder Business Partner Seiten, die mit den Standard-Modes nicht zurecht kommen)
  6. Richtlinienliste von Websites im Quirksmodus verwenden ( s. 5. Jedoch ist der Quirks-Modus [oder auch IE5 Modus] die schlechteste (aber auch “kompatibelste” Wahl, hier sollte ein Webseitenbetreiber angeregt werden, in Zukunft auf HTML4/5 zu setzen!)

 

Sofern ein Webseitenbetreiber erkannt hat, dass seine Webseite nicht korrekt in einem der Standardmodi dargestellt wird, so können über die F12 Developer Tools die entsprechenden Modi umgestellt werden und dadurch herausgefunden werden, welcher Modus der Beste für die eigene Webseite ist. Wenn dies herausgefunden wurde, kann dem IE über den HTML oder HTTP Header vorgegeben werden, welcher Modus zu verwenden ist.

Exkurs: dies kann auch bei standardkonformer Implementierung passieren, denn manche Definitionen in einem Standard sind interpretier fähig und da wir bemüht sind, dass die Standarddarstellung über die wichtigsten Browser gleich/ähnlich ist, sind wir hier im engen Kontakt mit unseren Marktbegleitern um genau diese Interpretationen anzugleichen.

Ein Beispiel hierzu: https://gps.cloudapp.net/?search=test
Der HTML Code ist xhtml Kompatibel, jedoch wird die Seite in IE9 Standards Modus anders dargestellt als im IE8 Standards Modus. Dies liegt an der Interpretation von (nicht) definierten Höhenangaben von Div Tags.

IE9: image
vs
IE8:image

Wenn für das Such-Ergebnis Tag eine Höhe (z.B. height:100%) definiert wäre, dann wäre die Ansicht in beiden Modi identisch [und beides immer noch 100% standardkonform!]. Wir haben hier den Weg über das Header Tag gewählt image, dies hat verschiedene Gründe. Letztlich sollte dies idealerweise durch die Änderung der Höhenangabe gelöst werden [im Moment ist es zu Anschauungszwecken einfach zu schön, als dass ich das derzeit ändern wollen würde! Winking smile].

 

Abschließend bleibt festzustellen, dass es derzeit für uns am sinnvollsten ist, die unterschiedlichen Renderingengines anzubieten, um eine best mögliche Kompatibilität zu den bestehenden Webseiten anzubieten.

In einer hoffentlich nicht mehr all zu fernen Zukunft wäre es natürlich wünschenswert, dass alle Seiten den aktuellen HTML Standard unterstützen, so dass wir in zukünftigen Internet Explorer Versionen darauf verzichten könnten, so dass gar nicht erst Verwirrung entstehen kann.

Zurück zur Übersicht der Blogserie!

 

Bis zum nächsten Post!

In Sachen des Gewissens ist die Mehrheit nicht zuständig. Mahatma Gandhi

 

-Stephanus