Den Internet Explorer 10 hat Microsoft schon im letzten Jahr zusammen mit Windows 8 ausgeliefert. Dieser Tage haben auch Windows-7-Anwender ein automatisches Update des Browsers von Version 9 auf Version 10 bekommen. Gut möglich, dass sich der eine oder andere dann erst einmal gewundert hat: Denn manche Websites, die unter Internet Explorer 9 noch korrekt dargestellt wurden, sehen plötzlich nicht mehr ganz richtig aus. Der konkrete Fall: Im IE10 waren per CSS definierten Farbverläufe – von IE9 und älter noch brav dargestellt – auf einmal verschwunden. Der Fachmann schaut dann in den Entwicklertools (F12) nach und wundert sich: Die Konsole behauptet nämlich „HTML1524: Ungültiger DOCTYPE. Der kürzeste gültige Dokumenttyp ist „<!DOCTYPE html>“.
Warum um alles in der Welt wird die Zeile
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
vom aktuellen Browser-Flaggschiff des Micrsosoft-Konzerns als fehlerhaft markiert, obwohl es sich dabei um eine gültige Dokumenten-Typ-Definition (DTD) handelt? Ein ordentlicher Mensch googelt als nächstes den Fehlercode „HTML1524“ und sieht, dass er nicht allein auf der Welt ist mit diesem Symptom. Hier wird eine Javascript-Bibliothek nicht mehr eingebunden, dort kann sich einer nicht mehr einloggen – und immer taucht diese vermaledeite Fehlermeldung in der Entwickler-Konsole auf. Schließlich schaut man dann direkt bei Microsoft nach – und findet eine !DOCTYPE-Referenz desselben Konzerns, die genau so eine Deklaration als korrektes Beispiel aufführt.
Aber vielleicht hilft ja ein anderer Artikel aus Microsofts Entwickler-Plattform MSDN. Er stammt von einem Menschen mit der volltönenden Job-Bezeichnung Senior Technical Evangelist und trägt den vielversprechenden Titel Fix common IE problems: Update your docmode for web Standards. Leider hat der durchaus informative Text des Microsoft-Klerikers in diesem Fall überhaupt keinen Nutzen. Denn der IE10 sieht die Seite durchaus als Standard-konform an. Das lässt sich im Entwicklertool-Fenster leicht kontrollieren. Dort muss, wenn alles okay ist, stehen: „Browsermodus: IE10, Dokumentmodus: Standards“. Und genau das steht auch da.
Microsofts Entwickler-Tools spinnen also, wenn Dokumente als „Transitional“ deklariert werden. Bei „Strict“ mucken sie nicht. Es gibt aber gute Gründe, ein Web-Dokument nicht als „Strict“ zu deklarieren; das muss an dieser Stelle gar nicht weiter begründet werden, denn „Transitional“ ist – noch einmal – ein gültiges Attribut.
Bleibt die Frage, was die Spinnerei mit den verschwundenen Farbverläufen zu tun hat. Die Antwort mag für alle, die bis hierher mitgelesen haben, enttäuschend sein: Das eine hat mit dem anderen gar nichts zu tun.
Im bewussten Fall sind die Farbverläufe deshalb verschwunden, weil die Website und mit ihr die Stylesheets noch aus einer Zeit stammen, als noch nicht einmal der Internet Explorer 9 erschienen war. Damals schlug man sich noch mit proprietären Filtern herum, mit denen die Browser IE8 sowie IE7 bis IE5.5 einfache Farbverläufe auf den Bildschirm zaubern konnten. Auch der IE9 unterstützte solche Filter noch. Im IE10 hat Microsoft diese Rückwärts-Kompatibilität nun gekappt – es sei denn, man schaltet den Browser in den Kompatibilitätsmodus. Oder man zwingt ihn dazu, zum Beispiel mit Hilfe eines IE-spezifischen <meta>-Tags, das vor allen anderen <meta>-Tags notiert sein muss und in diesem Beispiel den IE9 emuliert:
<meta http-equiv=“X-UA-Compatible“ content=“IE=9″ />
Aber so etwas macht ein zukunftsgewandter Entwickler natürlich nicht. Der freut sich vielmehr darüber, dass Microsoft den Weg der Standard-Konformität eingeschlagen hat, und aktualisiert das Stylesheet. Ganz ungetrübt ist die Freude aber doch nicht, denn der Preis dafür ist ein weiteres Browser-Präfix. Zu -webkit-linear-gradient (Safari, Chromium etc), -webkit-gradient (Webkit alt), -moz-linear-gradient (Firefox), -o-linear-gradient (Opera mit Presto-Engine) kommt nun noch eine CSS-Zeile mit Microsofts -ms-linear-gradient. Und weil immer noch Leute mit prähistorischen Internet-Explorern unterwegs sind, lässt man auch die alten Filter-Angaben im Stylesheet. Fortschritt kann manchmal mühsam sein.