Kontakt aufnehmen

JavaScript: frames-Objekt

Das clientseitige frames-Objekt bietet den Zugriff auf Frames innerhalb eines Framesets.

Zugriff  nach oben

Das frames-Objekt ermöglicht den Zugriff auf sämtliche Frames. Es selbst ist ein Array der einzelnen Frames innerhalb des Fensters. Auf einen Frame kann daher per window.frames[Nummer], wobei Nummer der nullbasierte Index des Frames ist, zugegriffen werden. Außerdem kann jeder Frame mit seinem Namen angesprochen werden (name-Attribut des frame-Elements). Jeder Frame wird als window-Objekt angesehen und enthält dessen Eigenschaften und Methoden.
Nehmen wir das folgende Frameset:

<frameset ...> <!--frameset1-->
 <frame name="frame1" ...>
  <frameset ...> <!--frameset2-->
   <frame name="frame2" ...>
   <frame name="frame3" ...>
  </frameset>
 <frame name="frame4" ...>
</frameset>

Wollen wir von diesem Dokument aus auf einen der 4 Frames zugreifen kann das z.B. so aussehen:

window.frames[0]... //frame1
window.frames[1]... //frame2
window.frames[2]... //frame3
window.frames[3]... //frame4
window.frames['frame1']... //frame1
window.frames['frame2']... //frame2
window.frames['frame3']... //frame3
window.frames['frame4']... //frame4

Ebenso ist es möglich nur den Namen zu notieren:

window.frame1... //frame1
window.frame2... //frame2
window.frame3... //frame3
window.frame4... //frame4

Unter JScript handelt es sich bei dem frames-Objekt zusätzlich um eine Kollektion die die Frame-Elemente einer Seite beinhaltet. Eine solche frames-Kollektion besitzt die length-Eigenschaft (JScript 1.0 ) sowie die Methoden item (JScript 3.0 ) und namedItem (JScript 6.0 ).
Bitte beachten Sie, dass es sich dabei um eine Kollektion handelt. Die Eigenschaften von Kollektionen werden im Abschnitt 4 dieses Kapitels genauer beschrieben.

JavaScript 1.2 JScript 3.0 length

Jedes frames-Objekt enthält die Eigenschaft length. Diese Beschreibt die Anzahl der enthaltenen Frames.
Notation: Objekt.length

for(i=0; i<window.frames.length; i++)
{
window.frames[i].location.href = 'neueseite.htm'
}

JavaScript 1.2 JScript 3.0 parent  nach oben

Was aber, wenn von frame4 auf frame1 oder frame1 auf frame4 zugegriffen werden soll? Hierzu bietet sich die parent-Eigenschaft des Fensters an. Sie liefert eine Verbindung zu dem nächst höheren Frameset in dem sich der aktuelle Frame befindet. Von frame1 und frame4 aus liefert es uns also frameset1 und von frame2 und frame3 aus bekommen wir frameset2 geliefert. Von parent aus kann dann wieder, entweder mit parent.frames oder mit parent. sowie dem Framenamen, auf den jeweiligen Bruderframe zugegriffen werden.

//von frame1 auf frame2 zugreifen:
parent.frame2...
parent.frames[1]...
parent.frames['frame2']...

//von frame1 auf frame3 zugreifen:
parent.frame3...
parent.frames[2]...
parent.frames['frame3']...

//von frame1 auf frame4 zugreifen:
parent.frame4...
parent.frames[3]...
parent.frames['frame4']...

//von frame2 auf frame3 zugreifen:
parent.frame3...
parent.frames[1]...
parent.frames['frame3']...

//von frame3 auf frame2 zugreifen:
parent.frame2...
parent.frames[0]...
parent.frames['frame2']...

//von frame4 auf frame1 zugreifen:
parent.frame1...
parent.frames[0]...
parent.frames['frame1']...

//von frame4 auf frame2 zugreifen:
parent.frame2...
parent.frames[1]...
parent.frames['frame2']...

//usw. ...

Bitte beachten Sie, dass beim Zugriff von frame2 auf frame3 mit parent nur das frameset2 angesprochen wird. Von dort aus gesehen handelt es sich nur um 2 Unterframes, die dementsprechend mit frames[0] und frames[1] angesprochen werden.
Die parent-Eigenschaft erlaubt darüber hinaus einen mehrmaligen Aufruf. Das heißt, wenn von frame2 auf frame1 zugegriffen werden soll, kann hierbei eine Vervielfachung der Eigenschaft verwendet werden:

parent.parent.frame1...
parent.parent.frames[0]...
parent.parent.frames['frame1']...

JavaScript 1.2 JScript 3.0 top  nach oben

Die top-Eigenschaft liefert das höchste Fenster. Das heißt, egal von welchem der 4 Frames top verwendet werden würde, es würde immer frameset1 dabei herauskommen. Somit kann lästige Schreibarbeit bei mehreren verschachtelten Framesets gespart werden.

top.frames[0]... //frame1 top.frames['frame2']... //frame2 top.frame3... //frame3 top.frames[3]... //frame4

Objekte, Variablen und Funktionen  nach oben

Da jeder Frame, wie bereits gesagt, wie ein window-Objekt angesehen wird, kann somit auch auf die entsprechenden Eigenschaften und Unterobjekte zugegriffen werden. Das heißt, jeder Frame hat eine location, eine history, ein document und so weiter.
Ebenso wie auf die Unterobjekte zugegriffen werden kann, kann auch auf Variablen, Objekte und Funktionen zugegriffen werden. Nehmen wir an frame1 besitzt ein JavaScript in dem eine Variable oder ein Objekt alter definiert wird. Der Zugriff auf diese Variable bzw. dieses Objekt von den einzelnen Frames könnte dann so aussehen:

a = top.frames[0].alter;
a = parent.frame1.alert;
//usw. ...

Nehmen wir an, frame2 enthält ebenfalls ein Script, das eine Funktion berechneJahr() enthält. Der Zugriff könnte z.B. so aussehen:

parent.frame2.berechneJahr(alter);
top.frames[1].berechneJahr(alter);
//usw. ...

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern