HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum |
 

 
 

Anzeige 
 
               Forum
 
 

JavaScript: frames-Objekt

von Jan Winkler

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

Anzeige

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. ...


 

JavaScript

.Autor:Jan Winkler.
. Bewertung:
JavaScript: frames-Objekt HTMLWorld
(5/5 bei 1 Votes)
.
. Community: 754 Beiträge im JavaScript Forum .

Navigation

Doku-Inhalt

html-Datei in Container nachladen von Piwi
blättern navigation - nicht alle seitenzahlen zeigen von Powell
XML-Datei per Javascript ver- und entschlüsseln?! von Nupsi
getElementById/innerHTML von duff_beer
Brauche dringend Hilfe/Gallery2.3 von Harburger1887
Window Open von javahack
Musik nach bestimmter Zeit abspielen von InsaYn
Merlin erscheint nicht auf der Website von Moijto
Bräuchte Hilfe von jemanden der sich auskennt ;-) von ladehf
Re: php Style über javascript laden nur wie? von TBT
Bannerwechsel mit mehreren Bannern und per Klick von katha126
HTML Referer ändern von nhs
JavaScript Weiterleitung von xmen
Zeitgesteuertes und zufälliges laden verschiedener index.php von Brainflame
Dynamisch erstellten (mit PHP) Checkboxen mit jQuery/AJAX au von Kyfe

zum JavaScript Forum »


 
     
 

Anzeige