SELFHTML/Navigationshilfen JavaScript/DOM Objektreferenz | |
frames |
|
frames: Allgemeines zur Verwendung Eigenschaft:length (Anzahl Frames) Unterobjekte: |
|
Mit dem Objekt frames
haben Sie Zugriff auf Frames, also auf ein Frame-Set und seine Frame-Fenster, die in einer HTML-Datei definiert sind.
Da jedes Frame-Fenster aus Sicht des Browsers ein eigenes Fenster darstellt, ist das frames
-Objekt lediglich eine Variante des window-Objekts, also des allgemeinen Fensterobjekts. Alle Eigenschaften und Methoden, die zum window
-Objekt gehören, lassen sich auch auf das frames
-Objekt, also auf einzelne Frame-Fenster anwenden. Das frames
-Objekt stellt nur deshalb ein eigenes Objekt dar, weil es eine zusätzliche Eigenschaft enthält, und weil bei der Adressierung von Frame-Fenstern in JavaScript ein paar Besonderheiten zu beachten sind:
parent.frames[#].Eigenschaft/Methode(); parent.frames[1].location.href = "sport.html";
parent.NameDesFrames.Eigenschaft/Methode(); parent.RechtesFenster.close();
parent
ist ein reservierter Fenstername, den Sie zum Ansprechen von Fenstern innerhalb eines Frame-Sets verwenden können. Anstelle von parent
können Sie auch top
verwenden. Mit parent
sprechen Sie das Eltern-Fenster des aktuellen Frame-Fensters an, mit top
in jedem Fall das oberste Anzeigefenster des Browsers.
Frame-Fenster können Sie auf zwei Arten ansprechen:
frames
an und dahinter in eckigen Klammern, das wie vielte Frame-Fenster im Frame-Set Sie meinen. Beachten Sie, dass der Zähler bei 0 beginnt, d.h. das erste Frame-Fenster sprechen Sie mit frames[0]
an, das zweite Frame-Fenster mit frames[1]
usw. Beim Zählen gilt die Reihenfolge, in der die <frame>
-Befehle im Frame-Set definiert sind.<frame ...>
im Attribut name
definiert worden ist.Da das frames
-Objekt eigentlich eine Variante des window-Objekts ist, können Sie nicht nur die alle Eigenschaften und Methoden des window
-Objekts auf das frames-Objekt anwenden, sondern auch alle anderen, die in der Hierarchie unterhalb des window
-Objekts stehen. Ebenso, wie Sie beispielsweise mit window.document.forms[0].elements[0].value = "Stefan"
den Inhalt eines Formular Eingabefelds in einer gewöhnlichen HTML-Datei ändern können, können Sie das gleiche innerhalb eines Frame-Sets etwa mit parent.frames[1].document.forms[0].elements[0].value = "Stefan"
erreichen.
Ein typisches Anwendungsbeispiel für den Einsatz des Frame-Objekts finden Sie in diesem Dokument: Zwei Frames gleichzeitig ändern.
Mit der gleichen Syntax, wie Sie auf HTML-Elemente in anderen Frame-Fenstern zugreifen können, können Sie auch auf JavaScripts zugreifen, die in einem anderen Frame-Fenster aktuell notiert sind. So können Sie Variablen des anderen Scripts auslesen und Funktionen des anderen Scripts aufrufen.
Das folgende Beispiel zeigt ein Frameset mit zwei Fenstern oben und unten. Das obere Fenster hat bei der Frameset-Definition den Namen oberesFenster
erhalten. Aus dem unteren Frame-Fenster wird nun auf ein JavaScript im oberen Frame-Fenster zugegriffen
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> var c = 0; function gibaus_c () { alert(c); } function erhoehe_c () { c++; window.setTimeout("erhoehe_c()", 100); } </script> </head><body onLoad="erhoehe_c()"> <p>Hier wird einfach nur 10 mal pro Sekunde die Variable <i>c</i> erhöht!</p> </body></html>
<html><head><title>Test</title> <script type="text/javascript"> function reset_c () { parent.oberesFenster.c = 0; } </script> </head><body> <p> <a href="javascript:parent.oberesFenster.gibaus_c()">Variable <i>c</i> anzeigen!</a><br> <a href="javascript:reset_c()">Variable <i>c</i> auf 0 setzen!</a> </p> </body></html>
Im oberen Fenster ist ein Script mit zwei Funktionen namens gibaus_c()
und erhoehe_c()
notiert. Die Funktion erhoehe_c()
wird mit dem Event-Handler onLoad
im einleitenden <body>
-Tag erstmals gestartet und ruft sich dann mit Hilfe der Methode setTimeout() alle 100 Millisekunden, also 10 mal pro Sekunde selber wieder auf. Dabei erhöht sie jedesmal die Variable c
um 1.
Im unteren Fenster sind zwei Verweise notiert. Der erste gibt den aktuellen Zählerstand von c
aus. Dazu wird mit parent.oberesFenster.gibaus_c()"
auf die Funktion gibaus_c()
im anderen Frame-Fenster zugegriffen. Der zweite Verweis ruft eine Funktion reset_c()
auf, die im Dateikopf des eigenen Dokuments notiert ist. Diese greift jedoch mit parent.oberesFenster.c
auf die Variable c
im anderen Frame-Fenster zu und setzt diese auf 0 zurück.
Speichert, wie viele Frame-Fenster ein übergeordnetes Fenster enthält.
Anzeigebeispiel: So sieht's aus
<html><head><title>Test</title> <script type="text/javascript"> for (var i = 0; i < parent.frames.length; i++) alert(parent.frames[i].name); </script> </head><body> </body></html>
Mit parent.frames.length
oder top.frames.length
können Sie die Anzahl der Frame-Fenster ermitteln. Im Beispiel wird angenommen, dass die HTML-Datei innerhalb eines Frame-Sets aufgerufen wird. Beim Einlesen der Datei gibt die Datei mit der Methode alert()
nacheinander die Namen aller Frame-Fenster im Frame-Set aus. Dazu dient die for-Schleife. Die Eigenschaft parent.frames.length
dient als Abbruchbedingung für die Schleife. Da der Schleifenzähler i
bei jedem Schleifendurchlauf um 1 erhöht wird, wird mit parent.frames[i]
jeweils das nächste Frame-Fenster angesprochen.
document | |
window | |
SELFHTML/Navigationshilfen JavaScript/DOM Objektreferenz |
© 2005 Impressum