Die JavaScript-Implementierungen heutiger Browser stellen eine Mixtur verschiedener, historisch gewachsener Vorgängersprachen, DOM-Modelle und dem Industriestandard ECMA-262 dar. Weitgehend unproblematisch war stets die Unterstützung der ECMAScipt-Standardobjekte, die gar nichts mit dem Document Object Model zu tun haben. Das sind folgende Objekte:
Daneben gibt es Objekte, die sich auf die Browser-Umgebung beziehen:
Weiterhin gibt es das ursprünglich von Microsoft eingeführte, aber allseits übernommene, für moderne Webanwendungen so wichtige XMLHTTPRequest-Objekt, hinter dem sich die so genannte Ajax-Technologie verbirgt. Dieses Objekt ermöglicht JavaScript, HTTP-Requests an den Webserver zu senden, von dem die Webseite geladen wurde. In Verbindung mit DOM-Scripting ist es Webanwendungen damit möglich, Daten während eine Webseite angezeigt wird vom Webserver zu ermitteln und ins aktuell im Browserfenster angezeigte HTML-Dokument einzubauen.
Mit HTML5 werden weitere Scripting-Schnittstellen eingeführt, die Ajax bzw. dem XMLHTTPRequest-Objekt vergleichbar sind. Dazu gehören:
Diese und weitere Schnittstellen werden JavaScript in Zukunft noch erheblich erweitern.
Das eigentliche DOM beginnt unterhalb des Window-Objekts, nämlich mit dem im Browserfenster angezeigten HTML-Dokument. Das oberste Objekt des DOM in der Abbildung der Dokumentstruktur ist das document-Objekt. Zu den Methoden dieses Objekts gehören unter anderem die Elementzugriffsmethoden getElementById(), getElementsByName() und getElementsByTagName(). Die Methoden zum Erzeugen von Knoten im DOM, wie createElement() oder createAttribute() gehören ebenfalls direkt zum document-Objekt. Das document-Objekt hat aber auch einige wichtige Eigenschaften, wie z.B. charset (Zeichenkodierung des Dokuments), URL (URL-Adresse des Dokuments) oder cookie (Cookies der Webseite).
Ausgehend vom document-Objekt gab es in der Vergangenheit leider verschiedene „Objekt-Philosophien“, wobei die älteren Modelle aber mittlerweile dem DOM des W3-Konsortiums weitgehend gewichen sind: Im klassischen, von Netscape entwickelten JavaScript lässt sich mittels Scripting nämlich nur auf bestimmte Elemente zugreifen. Zum auf Beispiel Grafiken - markiert durch ein images-Objekt, oder Formulare - markiert durch ein forms-Objekt. Formulare wiederum bestehen aus Formularelementen — markiert durch ein elements-Objekt.
Mit dem Internet Explorer 4 führte Microsoft seinerzeit ein wesentlich ausgereifteres DOM ein, mit dessen Hilfe auf jedes beliebige Element zugegriffen werden konnte. Die Zentrale des Microsoft-Modells war ein all-Objekt, über das der Zugriff auf alle Elemente, Attribute und Style-Eigenschaften möglich war.
Das Modell von Microsoft war also ein wichtiger Meilenstein auf dem Weg zum DOM des W3-Konsortiums. Das DOM weicht aber insofern von dem Microsoft-Ansatz ab, als es nicht auf HTML fixiert ist, sondern gleich alle XML-kompatiblen Sprachen abdeckt.
Am 1. Oktober 1998 wurde das DOM eine offizielle W3-Empfehlung (recommendation) in der Version 1.0, die seit dem 29. September 2000 in einer zweiten Ausgabe vorliegt. Seit 13. November 2000 ist die Version 2.0 des DOM eine offizielle W3-Empfehlung. Das entsprechende Dokument ist jedoch aufgesplittet in mehrere Einzeldokumente. Version 3.0 hat teilweise seit Jahren den Empfehlungsstatus. Andere Teile sind jedoch noch im Stadium einer Working Draft.
Ein wichtiger Aspekt des DOM ist, dass es nicht nur für HTML-ergänzende Script-Sprachen konzipiert ist, sondern auch für Script-Sprachen, die jegliche XML-basierte Auszeichnungssprache erweitern sollen. Das DOM orientiert sich daher in seinem Kern nicht an bestimmten HTML-Elementen. Stattdessen geht es in abstrakter Weise von einem „Dokument“ aus (das in XHTML geschrieben sein kann, aber auch in einer anderen XML-basierten Sprache). Es definiert, wie sich auf die einzelnen Elemente dieses Dokuments zugreifen lässt und welche Manipulationsmöglichkeiten es gibt. Da man aber bei der Entwicklung des DOM auch auf die Gegebenheiten und die Verbreitung von HTML und JavaScript Rücksicht nehmen wollte, wurde dem so genannten „Kern-DOM“ ein „HTML-Anwendungs-DOM“ zur Seite gestellt. Letzteres versucht, Teile des gewachsenen JavaScript und MS-JScript zu sanktionieren und Bestandteile des „Kern-DOM“ darin zu integrieren.
DOM 1.0 grenzt noch zahlreiche erweiterte Aspekte aus, wie etwa das Event-Handling (Behandlung von Anwenderereignissen wie Mausklicks, Tastatureingaben usw.) oder die Integration von Stylesheets in das, was Programmierer dynamisch verändern können. In den Versionen 2.0 und 3.0 behandelt das DOM auch diese Aspekte.
Korrekturen, Hinweise und Ergänzungen
Bitte scheut euch nicht und meldet, was auf dieser Seite sachlich falsch oder irreführend ist, was ergänzt werden sollte, was fehlt usw. Dazu bitte oben aus dem Menü Seite den Eintrag Diskutieren wählen. Es ist keine Anmeldung erforderlich, um Anmerkungen zu posten. Unpassende Postings, Spam usw. werden allerdings kommentarlos entfernt.