JavaScript - Tutorial - Objektreferenz - Das all-Objekt

Diese all-Objektreferenz befindet sich nur noch der Vollständigkeit halber in diesem Tutorial.
Stattdessen sollte man heutzutage die Objekte nach W3C-DOM-Level-3 benutzen.


window
document
all
style

all ist ein Array-Objekt, welches Information über alle Seitenelemente enthält.
Dieses Objekt wurde von Microsoft mit dem Internet Explorer 4 eingeführt. Da es recht praktisch in der Anwendung ist, unterstützen es auch Konqueror und Opera.
Leider hat Netscape sich dem nicht angeschlossen, der Navigator bietet dafür andere Notationsformen.
Das all-Objekt bietet im Internet Explorer die Möglichkeit, praktisch alle Seitenelemente zu manipulieren, von Text- und Hintergrundfarbe über den Textinhalt bis hin zur Positionierung auf dem Bildschirm. Aus praktischen Gründen folgen Konqueror und Opera diesen Möglichkeiten nicht allzu konsequent, deshalb will ich mich an dieser Stelle auch nicht damit beschäftigen. Höchste Priorität genießt für mich der Anspruch, möglichst auf allen Browsern das gleiche Ergebnis zu erzielen. Deshalb behandle ich propriertäre Features des MS Internet Explorer nur am Rande.
Im Netscape Navigator befinden sich einige Objekte anstatt an der Stelle document.all.object in der Hierarchie an der Stelle document.object oder sie fehlen.

Attribute des Objekts all
Attribut Bedeutung
lengthAnzahl der Seitenelemente
[#]#-tes Formular


Funktionen des Objekts all
Funktion Bedeutung
tags(tagname)gibt ein Array aller Tags zurück, die mit dem Tagnamen übereinstimmen

Beispielsweise liefert document.all.tags("h2") ein Array aller <h2>-Überschriften; document.all.tags("h2")[0] beinhaltet das erste derartige Objekt, document.all.tags("h2")[1] das zweite und so weiter; document.all.tags("h2").length gibt die Anzahl aller zutreffenden Objekte zurück.


Bei der Benutzung folgender Attribute sollte man Vorsicht walten lassen, da sie nicht von jedem Browser unterstützt werden oder teilweise nicht verändert werden dürfen.
Auf jeden Fall sollten Scripts, die diese Attribute verwenden, auch in Konqueror und Opera auf Funktionstüchtigkeit getestet werden.

Dies ist eine Liste, welche die automatische Objektauflistung (Anhang B) im MS Internet Explorer 5.00 lieferte.

Attribute der einzelnen Seitenelemente
Attribut Typ
accessKeystring
allobject
attributesobject
behaviorUrnsobject
canHaveChildrenboolean
charsetstring
childNodesobject
childrenobject
classNamestring
clientHeightnumber
clientLeftnumber
clientTopnumber
clientWidthnumber
contentstring
currentStyleobject
dirstring
documentobject
filtersobject
firstChildobject
httpEquivstring
idstring
innerHTMLstring
innerTextstring
isTextEditboolean
langstring
languagestring
lastChildobject
namestring
nextSiblingobject
nodeNamestring
nodeTypenumber
nodeValueobject
offsetHeightnumber
offsetLeftnumber
offsetParentobject
offsetTopnumber
offsetWidthnumber
onafterupdatePlatzhalter für Ereignis-Handler
onbeforecopyPlatzhalter für Ereignis-Handler
onbeforecutPlatzhalter für Ereignis-Handler
onbeforeeditfocusPlatzhalter für Ereignis-Handler
onbeforepastePlatzhalter für Ereignis-Handler
onbeforeupdatePlatzhalter für Ereignis-Handler
onblurPlatzhalter für Ereignis-Handler
oncellchangePlatzhalter für Ereignis-Handler
onclickPlatzhalter für Ereignis-Handler
oncontextmenuPlatzhalter für Ereignis-Handler
oncopyPlatzhalter für Ereignis-Handler
oncutPlatzhalter für Ereignis-Handler
ondataavailablePlatzhalter für Ereignis-Handler
ondatasetchangedPlatzhalter für Ereignis-Handler
ondatasetcompletePlatzhalter für Ereignis-Handler
ondblclickPlatzhalter für Ereignis-Handler
ondragPlatzhalter für Ereignis-Handler
ondragendPlatzhalter für Ereignis-Handler
ondragenterPlatzhalter für Ereignis-Handler
ondragleavePlatzhalter für Ereignis-Handler
ondragoverPlatzhalter für Ereignis-Handler
ondragstartPlatzhalter für Ereignis-Handler
ondropPlatzhalter für Ereignis-Handler
onerrorupdatePlatzhalter für Ereignis-Handler
onfilterchangePlatzhalter für Ereignis-Handler
onfocusPlatzhalter für Ereignis-Handler
onhelpPlatzhalter für Ereignis-Handler
onkeydownPlatzhalter für Ereignis-Handler
onkeypressPlatzhalter für Ereignis-Handler
onkeyupPlatzhalter für Ereignis-Handler
onlosecapturePlatzhalter für Ereignis-Handler
onmousedownPlatzhalter für Ereignis-Handler
onmousemovePlatzhalter für Ereignis-Handler
onmouseoutPlatzhalter für Ereignis-Handler
onmouseoverPlatzhalter für Ereignis-Handler
onmouseupPlatzhalter für Ereignis-Handler
onpastePlatzhalter für Ereignis-Handler
onpropertychangePlatzhalter für Ereignis-Handler
onreadystatechangePlatzhalter für Ereignis-Handler
onresizePlatzhalter für Ereignis-Handler
onrowenterPlatzhalter für Ereignis-Handler
onrowexitPlatzhalter für Ereignis-Handler
onrowsdeletePlatzhalter für Ereignis-Handler
onrowsinsertedPlatzhalter für Ereignis-Handler
onscrollPlatzhalter für Ereignis-Handler
onselectstartPlatzhalter für Ereignis-Handler
outerHTMLstring
outerTextstring
parentElementobject
parentNodeobject
parentTextEditobject
previousSiblingobject
readyStatestring
recordNumberobject
runtimeStyleobject
scopeNamestring
scrollHeightnumber
scrollLeftnumber
scrollTopnumber
scrollWidthnumber
sourceIndexnumber
styleobject
tabIndexnumber
tagNamestring
tagUrnstring
titlestring
urlstring


Scripts, die folgende Funktionen verwenden, sollten auch in Konqueror und Opera auf Funktionstüchtigkeit getestet werden.

Funktionen der einzelnen Seitenelemente
Funktion Bedeutung
click()Objekt anklicken
contains(object)ermittelt, ob ein weiteres Objekt im zur Funktion gehörenden Objekt enthalten ist
insertAdjacentHTML(position,HTMLcode) Fügt HTML-Code in den zugehörigen Quelltextabschnitt ein
position:
   "BeforeBegin"=vor dem einleitenden tag
   "AfterBegin"=nach dem einleitenden tag
   "BeforeEnd"=vor dem beendenden tag
   "AfterEnd"=nach dem beendenden tag
HTMLcode: einzufügender HTML-Quelltext
insertAdjacentText(position,text) Fügt Text in den zugehörigen Quelltextabschnitt ein
position:
   "BeforeBegin"=vor dem einleitenden tag
   "AfterBegin"=nach dem einleitenden tag
   "BeforeEnd"=vor dem beendenden tag
   "AfterEnd"=nach dem beendenden tag
text: einzufügender Text
scrollIntoView(top) rollt ein Objekt in den Sichtbereich
top:
   true=an oberem Rand ausrichten
   false=an unterem Rand ausrichten
Attribute manipulieren
getAttribute(name,mode) Gibt den Wert eines Attributes zurück
name: Attributname
mode: true wenn nach Groß-und Kleinschreibung unterschieden werden soll
removeAttribute(name,mode) entfernt ein Attribut
name: Attributname
mode: true wenn nach Groß-und Kleinschreibung unterschieden werden soll
setAttribute(name,value,mode) setzt den Wert eines Attributes
name: Attributname
value: Attributwert
mode: true wenn nach Groß-und Kleinschreibung unterschieden werden soll


Benutzung des all-Objekts


Dies möchte ich anhand eines Beispieles erläutern.
Will man auf einer Seite ein frei positionierbares Element einbinden, so ist der Fall im Netscape Navigator klar: es werden Layers mittels <layer>-tag eingebunden. Davon muß man jedoch Abstand nehmen, wenn die Seite auch auf anderen Browsern funzen soll.
Einen einigermaßen passablen Ersatz bietet hier das <div>-tag:
<div name="mein_div" id="mein_div" style="position:absolute; top:160; left:350; width:500; height:200; visibility:show">.
Diese Notationsform erzeugt eine Fläche im Dokument, welche an der linken oberen Ecke die Position (350,160) hat und 300 Pixel breit und 200 Pixel hoch ist. Der Hintergrund dieser Fläche sollte transparent sein, will man sie mit einer opaken Farbe füllen, sollte man eine bunte Tabelle einbinden. Man kann zwar für die Gesamtfläche eine Hintergrundfarbe oder ein Hintergrundbild im style-sheet angeben, jedoch tun sich manche Browser sehr schwer damit. Die Festlegung visibility:show stellt sicher, daß dieses Objekt mit seinem Inhalt auch tatsächlich angezeigt wird.
Es gibt nun zwei praktikable Möglichkeiten des Zugriffs auf das Objekt; einmal über document.all.tags("div")[#], alternativ dazu über document.all.mein_div. Für die zweite Möglichkeit sorgt die Notierung von id="mein_div" im Tag.
Damit das ganze auch unter Netscape funktioniert, sollte man, wie gezeigt, auch name="mein_div" definieren. Dann kann man das Objekt in der Netscape-Notation als document.mein_div ansprechen.
Ich kenne keinen Browser, der sowohl die Netscape- als auch die Microsoft-Schreibweise akzeptiert, daher ist eine Unterscheidung vorzunehmen. Mit der Abfrage if (document.all) ist zu ermitteln, ob der Browser das all-Objekt kennt. Ist das der Fall, so ist das Objekt als document.all.mein_div anzusprechen, ansonsten als document.mein_div.
Um die Position auf dem Bildschirm zu verändern, manipuliere man bei Microsoft-Schreibweise die Attribute document.all.mein_div.style.top (Y-Position) und document.all.mein_div.style.left (X-Position); bei Netscape-Schreibweise document.mein_div.top (Y-Position) und document.mein_div.left (X-Position).

Ein Funktionsbeispiel findet sich im Anhang C.

Autor: Ulrich Kritzner