Internet Explorer 8: Warum Standards allein nicht reichen

Auf meinen Artikel Internet Explorer 8: Ist das Web bereit? bekam ich ein Feedback von einem Leser, welches ich erst direkt beantworten wollte. Die Antwort wurde aber so lang, dass ich jetzt ein eigenes Posting daraus gemacht habe.

Thursday, July 17, 2008 5:18 PM by jan
# re: Internet Explorer 8: Ist das Web bereit?

ja aber wer setzt diese kompatibilität? ist der firefox 3 oder der opera 9.5 nicht kompatibel? ich kenne einen webprogrammierer, der immer meckert das jeder browser immer alles anders macht. macht der ie8 es jetzt so wie es sein sollte? wer bestimmt wie es sein sollte?

Genau das sind wichtige Fragen, die bisher keiner so richtig beantwortet hat. Standards werden von einer Standardisierungsorganisation verabschiedet. Nehmen wir zum Beispiel Cascading Stylesheets. Das World Wide Web Consortium (W3C) ist der Hüter für Web Standards und Guidelines. Man schaue sich dort mal die aktuelle Spezifikation von Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) W3C Candidate Recommendation 19 July 2007 an, wie ein Browser ein Tabellenlayout rendern soll:

17.5.2 Table width algorithms: the 'table-layout' property
CSS does not define an "optimal" layout for tables since, in many cases, what is optimal is a matter of taste. CSS does define constraints that user agents must respect when laying out a table. User agents may use any algorithm they wish to do so, and are free to prefer rendering speed over precision, except when the "fixed layout algorithm" is selected.

Was steht da genau? Das optimale Tabellenlayout ist oftmals eine Frage des Geschmacks, deshalb darf jeder Browser nach seinem Gutdünken das ganze darstellen (es sei denn, dass Layout ist auf "fixed layout algorithm" eingestellt). Es geht noch weiter:

17.5.2.2 Automatic table layout In this algorithm (which generally requires no more than two passes), the table's width is given by the width of its columns (and intervening borders). This algorithm reflects the behavior of several popular HTML user agents at the writing of this specification. UAs are not required to implement this algorithm to determine the table layout in the case that 'table-layout' is 'auto'; they can use any other algorithm even if it results in different behavior.

Was bedeutet das? Erstmal ist die Standardisierung des Verhaltens angelehnt an die bisherige Implementierung in populären Browsern zum Zeitpunkt des Verfassens der Spezifikation. Zweitens darf jeder Browser seine eigene Interpretation implementieren, auch wenn das zu unterschiedlichen Ergebnissen führt. Im Ergebnis ist das eine Katastrophe für Interoperabilität.

Standardisierung allein ist also auch nicht ausreichend dafür, dass eine Webseite nur einmal geschrieben werden braucht und dann auf allen Browsern gleich dargestellt wird. Selbst die standardkonformsten Browser können hier unterschiedliche Ausgaben erzeugen, was sich für den Anwender natürlich als falsch beziehungsweise fehlerhafte Ausgabe darstellt. Dabei ist es 100% standardkonform.

Microsoft hat auch deswegen eine Test Suite für >700 CSS2 Testfälle entwickelt, die Unklarheiten in der Spezifikation lösbar machen sollen. Die Test Suite for CSS steht unter BSD Lizenz und wurde an das W3C zur Weiterentwicklung gestiftet, damit es als Basis einer Certification Test Suite dienen kann. Damit könnte man zukünftig sicherstellen, dass alle Browser, die diese Certification Testsuite bestehen, CSS2.1 gleich darstellen.

BTW: In einem weiteren Kommentar schrieb ein anderer Leser:

Thursday, July 17, 2008 1:26 PM by Steve
# re: Internet Explorer 8: Ist das Web bereit?

Nicht ist das web bereit für IE8 sondern ist der IE8 für´s web bereit? nicht wir müssen nun alles neu erfinden sondern microsoft muss sich uns anpassen ansonsten sind bald alle bei linux und firefox und wie sie alle heissen! der User braucht keine gängelei denn es gibt alternativen.

Wer denkt, dass sei nur ein IE-Problem oder Microsofts Versuch, Benutzer zu gängeln, denkt zu kurz. Siehe dazu zum Beispiel folgender Thread von pro-linux.de aus dem Jahre 2003 . Da geht es um die Interpretation von 'table-layout' = 'auto' durch Opera vs. Firefox und andere Browser. Zitat:

Tja, wenn Opera die Breite von Tabellenzellen ein wenig toleranter und intelligenter rendern würde (eben so wie alle anderen Browser), dann wäre er wirklich ein ernst zu nehmender Konkurrent.
...
Einfach mal in Opera und dann in einem anderen Browser ansehen.