Probleme mit dem Document Object Model

Das Document Object Model ermöglicht die Be- und Verarbeitung von XML-basierten Sprachen – so auch XHTML. Mittels DOM kann demzufolge der HTML-Baum nach Belieben erweitert, verkleinert oder verändert werden. Das klingt zunächst super, allerdings gibt es in den derzeitigen Browser-Versionen einige Probleme.

Das Document Object Model an sich ist eine sehr gut durchdachte (und standardisierte) Sache. Es verwandelt jeden Knoten des HTML-Baums eines Dokumentes in ein Objekt im Sinne der OOP. Besonders für AJAX-Anwendungen ist das DOM integraler Bestandteil. So können dessen Eigenschaften verändert werden (z.B. einem bestimmten Div-Element eine andere Hintergrundfarbe zuweisen) oder auf Methoden dieses Elementes zugegriffen werden (z.B. Kindelemente hinzufügen).

Das ganze funktioniert über JavaScript. Und leider ist es auch Zeiten einer durch die ECMA standardisierten JavaScript-Version so, dass es in verschiedenen Browsern Unterschiede gibt. Das ist bei JavaScript ähnlich wie bei CSS.
Dem IE ist manchmal der Unterschied zwischen id- und class-Attributen unklar. Beim Event Model gibt es ebenfalls Unterschiede. In vielen DOM-Methoden sind Bugs eingebaut usw. – ein Zustand, mit dem man nur ziemlich schwer cross-browser-fähige JavaScript-Anwendungen schrieben kann.
John Resig, der “Erfinder” von jQuery und Mitarbeiter der Mozilla Foundation, hat nun die aktuellen Probleme mit dem Document Object Model in eine Präsentation gegossen:

The DOM is a Mess @ Yahoo
View more presentations from jeresig. (tags: dom javascript)

Wer lieber das Video mit der Präsenation und Kommentaren von John Resig sehen möchte:

Welche Erfahrungen habt ihr im Umgang mit dem DOM gemacht? Kennt ihr solche Probleme? Ich würde mich über Kommentare freuen.

Dieser Beitrag wurde in   JavaScript veröffentlicht und verschlagwortet mit   .
Fügen Sie ein Lesezeichen für den   permanenten Link hinzu.

Jan hat 152 Beiträge geschrieben

Eine Antwort schreiben

Ihre E-Mail-Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert mit *

You may use these HTML tags and attributes: <a href=""> <blockquote cite=""> <pre lang=""> <b> <strong> <i> <em>