Wozu es Standards im Netz gibt

Derzeit arbeite in beruflich an einem Web-Projekt. Da es um Datenhandling geht, kommt man um Formulare eigentlich nicht herum. Nun hat man aber immer wieder das Problem doch einige Tabellen in JavaScript füllen zu müssen. Dank mittlerweile halbwegs standardisiertem und akzeptiertem Document Object Model (DOM) auch nicht mehr übermäßig komplex, wenn auch sicherlich keine Aufgabe für Anfänger.

Prinzipiell gibt es zwei Ansätze die man verfolgen kann – entweder man baut sich mittels Skript Befehlen die gewünschten Objekte jeweils from Scratch zusammen und fügt sie dann in das Dokument ein, oder man verwendet eine Art Vorlage, die man sich dann jeweils an den Bedarf anpasst.
Für einfache Dinge eignet sich die Methode „from Scratch“ sicherlich ganz gut, wenn es dann an formatierte Tabellenzellen mit Formularen und möglicherweise langen Auswahllisten geht, ist man mit der Vorlage doch einfacher dran – zumal man Auswahllisten ja schon vorab aus der Datenbank generieren kann. Es ginge auch mit AJAX zu realisieren, aber warum so kompliziert wenn es in den allermeisten Fällen auch einfach geht.

Das schöne an dem mittlerweile einheitlichen DOM ist: Man hat sehr schnell Erfolge in den meisten Browsern. Ich verwende standardmäßig Opera und Firefox, denn diese bringen schon seit geraumer Zeit hilfreiche Werkzeuge fürs Debugging von Skripten und auch für Stylesheets mit. Wer sich schonmal genauer mit den Auswirkungen diverser Formatierungsangaben in verschiedenen Browsern auseinander gesetzt hat, weiß den Komfort zu schätzen, den diese Werkzeuge mit sich bringen.

Die große Ernüchterung macht sich dann meist breit, wenn man anfängt zu testen. Dann treten die diversen lästigen Details zu Tage und die ein oder andere Ungereimtheit auch mal wieder. Ärgerlicherweise ist es dann oft ein singulärer Browser, der eine Extrawurst braucht und für den man wieder mal jede Menge Arbeitszeit opfern muss, weil er nunmal in vielen Firmen immer noch der Standard ist … ja die Rede ist vom Internet-Explorer. Auch wenn er in den letzten Versionen endlich mal wichtige Schritte in die richtige Richtung gemacht hat – ein wirklich attraktives Werkzeug ist er für mich immer noch nicht. Das mag einfach mit den Erfahrungen zusammen hängen, als ich meine ersten Schritte im Netz gemacht habe – da war der Internet-Explorer eine eher schlechte Option – der Netscape Navigator war das Tool der Wahl für die Profis. Nachdem Netscape pleite war und Firefox noch nicht in Reichweite, gab es wenig Wahl und der IE setzte sich leider immer mehr durch (obwohl eigentlich das schlechtere Produkt – wie leider so üblich) – ich habe damals durch die c’t Opera kennen und schätzen gelernt.

Aber zurück zum Thema: Das mit dem Einfügen der Tabellenzeilen funktioniert in allen Browsern außer dem Internet-Explorer 🙁 Allerdings kann ich auch keine Fehlemeldung entdecken, dass in dem Skript etwas falsch laufen würde. Googlen bringt erste Hinweise ans Licht: Der Internet-Explorer braucht zwingend ein

<tbody><tr><td></td></tr></tbody>

Konstrukt in der Tabelle. Das Tag selbst habe ich schon mehrfach gesehen und die Funktion ist auch klar zu erkennen – es deklariert den Datenteil einer Tabelle, zusätzlich gibt es noch

<thead>Tabellenkopfzeilen</thead>

und

<tfoot>Tabellenfußzeilen</tfoot>

Nun gut, erst mal fühle ich mich ertappt: Mal wieder nicht an den Standard gehalten und etwas genommen was du schon ewig so machst – ggf. mal in den Standard schauen hilft … zu oft habe ich schon unschöne Seiteneffekte erlebt, weil ich etwas im Kopf hatte was so aber nicht mehr Stand der Technik war oder einfach nie gestimmt hat (einmal falsch abgeguckt und nicht nachgedacht – passiert jedem mal und irgendwann fällt es einem dann doch auf …).

Da ich Standards ja für sinnvoll halte und auch gerne einhalten will, gerade was (X)-HTML betrifft, ist der nächste Schritt klar: Ab mit der Seite in den Validator vom W3C – was wenn nicht dieses Tool wird mir sagen ob mein HTML stimmt oder Lücken / Fehler hat. Und Tatsache: Es gibt haufenweise Fehler, zumindest im ersten Anlauf … die üblichen Verdächtigen, die jeder im Web kennt: Da mal wieder vergessen ein inhaltsleeres Tag wie etwa

<br />

oder

<input />

oder auch

<img />

als ein solches zu kennzeichnen. Dann noch das übliche Gemeckere über die vergessen Alt-Tags für grafische Elemente, die man als international verwendbare Icons für bestimmte Links verwendet hat … alles kein Drama und die meisten Fehler sind mehrfach da, schließlich werden die Tabellen aus der Datenbank gespeist und die hat meist halt mal mehr als einen Datensatz …
Nachdem der Validator dann sagt „alles ok“ wundert man sich doch – man hat an der Tabelle noch nichts geändert, sie ist in klassischer Weise definiert:

<table><tr><td></td></tr></table>

und das scheint auch seine Richtigkeit zu haben.

Nun will es aber genau wissen und ich schlage im Standard selbst nach – in der Document Type Definition für XHTML nach. Und siehe da: Die Verwendung von

<tbody></tbody>

ist tatsächlich optional. Na wenigstens hab ich mir nichts direkt vorzuwerfen. Um die zusätzliche Kennzeichnung und eine neuerliche Anpassung des Codes komme ich zwar nicht rum, aber immerhin habe ich jetzt Gewissheit wo der Fehler liegt.

Irgendwie ärgert mich das doch glatt mal wieder ziemlich, dass man es in Redmond mal wieder versteht sämtliche Standards einfach so zu verdrehen wie es einem gerade beliebt. Ansonsten ist der IE sich doch sonst zu nichts zu Schade und rendert jeden noch so verkorksten Code immer noch recht ansehnlich, wo andere bereits die Flügel strecken, weil es vom Standard her einfach nicht mehr geht. Warum gerade hier bei solchen Kleinkram den Entwicklern wieder das Leben schwer gemacht wird, weiß ich nicht. So schwer kann es doch nunmal nicht sein einen Standard zu lesen. Sicherlich weißen viele Standards im Webbereich einiges an Interpretationsspielraum auf – mit SIP hatte ich die Erfahrung ja auch schon. Aber hier gibt es keinen solchen Auslegungsspielraum – nicht im Geringsten! Also bitte liebe Entwickler lernt lesen und behebt diesen Fehler endlich, so schwer kann das doch wirklich nicht sein. Die anderen Hersteller bekommen es doch auch hin…

Als Rat bleibt mir nur noch zu sagen: Wann immer möglich, nehmt alternative Browser – man muss nicht immer das erstbeste nehmen was man bekommt – zumal es die Alternativen ebenfalls zum Nulltarif gibt. Vom Funktionsumfang her stecken sie meiner Erfahrung nach den IE noch immer in die Tasche

Posted in Web |