| # Hinweise zur JavaScript-Objektreferenz
| Objekthierarchie Objektreferenz verwenden Angaben zur Browserunterstützung

## Objekthierarchie

Es gibt zwei Gruppen von vordefinierten Objekten im klassischen JavaScript.

Die eine Gruppe ist jene, die das Browser-Fenster - markiert durch das window-Objekt - zum Ausgangspunkt hat. Das Browser-Fenster ist der allgemeine Rahmen für alles, was innerhalb davon angezeigt wird. Das, was innerhalb davon angezeigt wird, gilt als Dokument, markiert durch das document-Objekt. Letzteres ist wiederum für das Document Object Model (DOM) das oberste Ausgangsobjekt. Und ausgehend vom `document`-Objekt gibt es leider zwei verschiedene "Objekt-Philosophien", die heute nebeneinanderstehen: Im klassischen JavaScript enthält ein Dokument nämlich bestimmte Elemente, auf die mit JavaScript zugegriffen werden kann, zum Beispiel Grafiken - markiert durch das images-Objekt, oder Formulare - markiert durch das forms-Objekt. Formulare wiederum bestehen aus Formularelementen - markiert durch das elements-Objekt. Im neueren Modell des Internet Explorers und auch des DOM ist dagegen nicht nur der Zugriff auf solche bestimmten Elementtypen möglich, sondern der Zugriff auf alle Elemente eines Dokuments - nach Syntax des Internet Explorers markiert durch das all-Objekt, und nach DOM-Syntax markiert durch bestimmte Zugriffsmethoden des `document`-Objekts, durch die HTML-Elementobjekte und das node-Objekt. Diese beiden widerstreitenden Modelle zwischen klassischem JavaScript und den neueren Modellen sorgen leider für viel Verwirrung. Die neueren Modelle sind zweifellos durchdachter und bieten dem JavaScript-Programmierer viel mehr Möglichkeiten. Doch die "Jugendsünden" von Netscapes klassischem JavaScript sind nun mal nicht so leicht aus der Welt zu schaffen, und so bestehen die Modelle auf unabsehbare Zeit weiter nebeneinander.

Die zweite Gruppe von JavaScript-Objekten sind jene, die nichts direkt mit dem Geschehen im Anzeigefenster zu tun haben, aber wichtige andere Daten liefern oder Funktionen ausüben. Netscape bezeichnet sie als core objects (Kernobjekte). Typische Vertreter dieser zweiten Gruppe sind etwa das Date-Objekt für Datums- und Uhrzeitberechnungen, das navigator-Objekt für Informationen zum verwendeten Browser, oder das Array-Objekt zum Erzeugen von Serienvariablen. Auch bei dieser Gruppe gibt es ein paar hierarchische Beziehungen. So ist beispielsweise das plugins-Objekt ein Unterobjekt des `navigator`-Objekts.

Objekthierarchien werden in JavaScript stets dadurch ausgedrückt, dass die Objekte aneinandergereiht und durch Punkt getrennt werden. Typisch sind Notationen sehen so aus wie `window.document.images.length`. Dabei steht `window` für das Browser-Fenster, in dem das JavaScript läuft, `document` für das in diesem Fenster angezeigte Dokument, `images` für die Gesamtheit der in dem Dokument enthaltenen Grafikreferenzen, und `length` für eine Eigenschaft des `images`-Objekts.

Abgesehen von dieser einfachen Grundregel haben viele Objekte jedoch ihre Besonderheiten. Bei den Beschreibungen zu den jeweiligen Objekten wird darauf hingewiesen.

## Objektreferenz verwenden

Jedes JavaScript-Objekt wird in dieser Referenz nach folgendem Schema beschrieben:

### Allgemeines zur Verwendung

In diesem Abschnitt wird beschrieben, welche Voraussetzungen erfüllt sein müssen, damit Sie die Eigenschaften und Methoden des Objekts benutzen können. Lesen Sie diesen Abschnitt genau, wenn Sie mit dem Objekt noch nie gearbeitet haben.

### Eigenschaften

In diesem Abschnitt werden die Eigenschaften eines Objekts beschrieben. Eine Eigenschaft eines JavaScript-Objekts ist zum Beispiel `window.location.href` - den URI der aktuell angezeigten HTML-Datei. Die Werte von solchen Objekteigenschaften können Sie in jedem Fall auslesen. In vielen Fällen können Sie die Werte auch ändern. In der Objektreferenz wird jeweils angegeben, ob Sie eine gespeicherte Objekteigenschaft nur auslesen oder auch ändern können. Dazu werden in dieser Objektreferenz folgende Signalisierungen benutzt:

Symbol | Bedeutung
--- | ---
| Sie können den Wert der Eigenschaft auslesen, aber nicht ändern. Sie können den Wert zum Beispiel in einer selbst definierten Variablen speichern. So können Sie beispielsweise den URI der angezeigten HTML-Datei durch `var Adresse = window.location.href` in einer Variablen namens `Adresse` speichern. Das heißt, Sie weisen einer Variablen den Wert der Objekteigenschaft zu. Die Variable können Sie nach Belieben weiterverarbeiten.
| Sie können die Objekteigenschaft auslesen, ihr aber auch selbst einen neuen Wert zuweisen. So können Sie zum Beispiel den URI der angezeigten HTML-Datei durch `window.location.href = "http://de.selfhtml.org/"` ändern. Das heißt, Sie weisen der Objekteigenschaft einen Wert zu. Im Beispiel hat das zur Folge, dass der Web-Browser einen Sprung zu dem angegebenen URI ausführt.

### Methoden

Methoden eines Objekts sind objektgebundene Funktionen, die eine Aktion ausführen. So können Sie zum Beispiel mit `document.write("<b>Ihr Web-Browser: <\/b>" + navigator.userAgent)` dynamisch erzeugten, HTML-formatierten Text in das aktuelle Anzeigefenster des Web-Browsers schreiben. Im Beispiel wird auf diese Weise der vom Anwender verwendete Web-Browser-Typ ins Anzeigefenster geschrieben.

## Angaben zur Browserunterstützung

Zu jedem Objekt, jeder Eigenschaft und Methode finden sich Angaben dazu, welche Web-Browser das beschriebene Objekt kennen und korrekt unterstützen. Diese Angaben stehen als Symbole neben der jeweiligen Abschnittsüberschrift. Die Nennung eines Symbol bedeutet, dass der mit dem Symbol bezeichnete Browser das JavaScript-Feature mindestens ab der genannte Version unterstützt.

Die Tests der Browser-Unterstützung erfolgen in der Regel mit dem angegebenen Beispiel-Dokument. Es ist möglich, dass das fragliche Feature in anderen Fällen anders unterstützt wird, als durch die Symbole angegeben wird. Vor allem in der Referenz zu den HTML-Elementobjekten werden verschiedene Eigenschaften und Methoden in einem Abschnitt aufgelistet. Die Beispiele demonstrieren jeweils nur eine wichtige Eigenschaft oder Methode eines HTML-Elementobjekts. Die Browser-Symbole beziehen sich jeweils auf dieses Beispiel und sagen zumeist nichts darüber aus, wie die übrigen Eigenschaften und Methoden des Elementobjekts unterstützt werden.

Vor gewissen alten Browser-Versionen wurde nicht getestet. Die ältesten Versionen, mit denen getestet wurde, können Sie der Symbol-Legende entnehmen. Vereinzelt gibt es jedoch Abweichungen davon. Inbesondere konnten nicht alle Features mit Apples Safari 1.0 getestet werden. An diesen Stellen befindet sich zumindest ein Symbol, welches die Unterstützung ab Safari 1.3 anzeigt. Diese Angaben werden in zukünftigen SELFHTML-Versionen korrigiert werden.

Über die Symbole hinaus finden Sie an vielen Stellen Hinweise zur Browserunterstützung im Abschnitt "Beachten Sie".

Verschiedene JavaScript-Methoden und -Eigenschaften ermöglichen Änderungen am Browserfenster des Anwenders, das selbstständige Öffnen neuer Fenster oder ähnliche ärgerliche Manipulationen, die dem Anwender in vielen Fällen unerwünscht sind. Prominente Beispiele sind window.open() und window.status. Aufgrund des umfassenden Missbrauchs dieser JavaScript-Techniken im Web besitzen moderne Browser in ihren Einstellungen die Möglichkeit, die Verwendung dieser Objekte auf Web-Seiten einzuschränken. Sie sollten diese Techniken nur mit Bedacht einsetzen, denn Sie müssen damit rechnen, dass moderne Browser den Zugriff auf manche Objekte völlig sperren oder ihre Benutzung wirkungslos bleibt. Selbst wenn der Browser den Zugriff erlaubt, sollten Sie sich fragen, ob Sie den Anwender z.B. mit dem Öffnen von neuen Fenstern letztlich nur abschrecken.

| window
| Event-Handler

© 2007 Impressum