Methoden zum Zugriff auf Informationen
<< < > >> > Hauptteil > Interaktion > SVG DOM > internes Skript > Zugriff

Um an die Knoten (Element, Attribute und Text) des ganzen SVG-Dokuments zu kommen, muss man von vorne anfangen können, sprich man braucht das Wurzel-Objekt, welches das SVG-Dokument beinhaltet. Dieses erhält man wie folgt: Am Anfang jedes Skriptes in SVG steht das Event, dass das Skript ausgelöst hat. Das Event-Objekt heisst evt. Die verschiedenen Event-Objekte (MouseEvent etc.) entsprechen übrigens völlig den DOM-Level-2 Event-Objekten und besitzen somit die bekannten Funktionen und Member (z.B. clientX, clientY...). evt besitzt zudem die Funktion getTarget(), die das Element liefert, welches das Event ausgelöst hat. Und jedes Element besitzt wiederum die Funktion getOwnerDocument(), die das SVG-Dokument liefert. Die Zeile

var svgdoc = evt.getTarget().getOwnerDocument();

speichert das SVG-Dokument in der Variable svgdoc. Dies ist meistens am Anfang einer Funktion sinnvoll. Um dann auf die Elemente des SVG-Dokuments zuzugreifen, gibt es folgende Funktionen, die das SVG-Dokument-Objekt besitzt:

Funktion Bedeutung
getElementById(id) Liefert das Objekt zu dem Element, das die entsprechende id hat.
getElementsByTagName(tagname) Liefert eine Liste von Element-Objekten, die alle den entsprechenden Tagnamen haben. Die Länge der Liste kann man dann über die Property length herausfinden. Auf die einzelnen Listenelemente kann über die Funktion item(index) zugegriffen werden. Dies wird in Beispiel 46 gezeigt, das nach dem Laden der SVG die Anzahl der Rechtecke und das erste Objekt dieser Liste anzeigt.
getDocumentElement() liefert das Objekt zum <svg>-Element.

Hat man dann erst mal ein Objekt, das einen Knoten - was ein Element, Attribut oder einfach nur Text sein kann - beinhaltet, besitzt dieser diverse Funktionen, um auf andere Knoten, z. B. den Child-Knoten, und Knotenwerte zuzugreifen:

Funktion Bedeutung
getNodeType() gibt die Art des Knotens als Ganzzahl zurück. Dabei bedeutet die 1 einen Element-Knoten, die 2 einen Attribut-Knoten und die 3 einen Text-Knoten.
getNodeName() gibt den Knotennamen zurück (z.B. den Elementnamen, so wie "rect") .
getParentNode() gibt den Eltern-Knoten zurück, wenn es diesen gibt.
hasChildNodes() prüft, ob der Knoten Kind-Knoten besitzt.
getChildNodes() liefert eine Liste mit den Kind-Knoten.
getFirstChild() liefert den ersten Kind-Knoten zurück.
getNodeValue() liefert den Inhalt des Knotens. Bei einem Text-Knoten wird der reine Text geliefert (dazu wird die Funktion auch meistens genutzt).

Das Beispiel 47 zeigt die Anwendung der Knoten-Funktionen. Hat man ein Objekt, das ein Element beinhaltet, besitzt dieses folgende Funktionen, die den Zugriff auf die Attribute des Elements ermöglichen:

Funktion Bedeutung
getAttributes() liefert eine Liste mit Attribut-Knoten.
getAttribute(attributeName) liefert den Wert des entsprechenden Attributes.
getStyle() liefert eine Liste mit Style-Eigenschaften, die im style-Attribut des Elementes definiert sind. Stylesheets werden damit nicht ausgelesen.
getPropertyValue(Eigenschaftsname) liefert für eine enstprechende Style-Eigenschaft den Wert. Die Funktion muss auf die Liste von Style-Eigenschaften angewendet werden.
getCssText() liefert die Liste mit style-Eigenschaften und deren Werte als Text. Die Funktion muss auf die Liste von Style-Eigenschaften angewendet werden.

Auch hier soll ein Beispiel die Funktionen verwenden, in Beispiel 48 werden einige Attribute und Style-Eigenschaften der Ellipse ausgelesen, wenn das SVG mit der Maus angeklickt wird.
Als letztes gibt es noch spezielle Zugriffsfunktionen für Text, sprich das <text>-Element:

Funktion Bedeutung
getData() liefert den Text-Inhalt eines Text-Knotens (!) zurück. Diese Funktion wird also nicht auf das <text>-Element, sondern dessen FirstChild, dem Text-Knoten angewendet. Die Funktion hat auf einen Text-Knoten also den gleichen Effekt wie getNodeValue().
getComputedTextLength() liefert die Breite des gesamten Text-Elementes in Pixeln zurück, wird daher auch auf den <text>-Element-Knoten angewendet.
substringData(start, length) liefert eine Teilzeichenkette aus einem Text-Knoten, die bei start beginnt und length Zeichen lang ist.
getSubStringLength(von, länge) liefert die Breite der Zeichenkette aus dem Text-Element in Pixeln. Der Parameter von bestimmt den ersten Buchstaben der Zeichenkette (0 ist der erste Index), der Parameter länge bestimmt die Länge der Zeichenekette. Die Funktion wird auch auf den <text>-Element-Knoten angewendet.

Beispiel 49 wendet diese Funktionen an.