parent.frames['fenstername'].location.href="seite.htm";
parent.fenstername.location.href="seite.htm";
parent.frames[0].location.href="seite.htm";
Will man mittels Javascript einen Link aufrufen gibt es mehrere Möglichkeiten. Siehe hierzu diese interessante Javascrip- Seite im Netz.
Will man mit einem Link 2 Seiten in 2 Framefenstern gleichzeitig öffnen, muss man erst mal wissen, wie man solche Links mit Javascirpt ausführt. Oben sieht man 3 verschiedene, mögliche Scheibweisen. In den ersten beiden Beispielen wird der Fenstername, welcher in der Framedefinition bestimmt wird, benutzt, um das Fenster zu bestimmen, in dem sich die Seite öffnen soll.
Im dritten Beispiel wird ein Zahlenwert eingegeben, der das Framefenster bestimmt. Die Zahl in der eckigen Klammer bezieht sich auf die Reihenfolge der im Frameset definierten Framefenster. Der zuerst definiert Frame ist 0, der zweite 1 etc.
parent bedeutet immer man geht eine Stufe zurück. Wenn man also dieses Beispielscript auf irgendeiner Seite innerhalb des Framesets aufruft, ist damit das übergeordnete Frameset gemeint. Wenn man 2 Framesets ineinander verschachtelt, kommt man mit parent.parent 2 Stufen zurück und somit zum ersten Frameset wenn der Aufruf innerhalb einer Seite im zweiten Frameset steht.
Beispiel
In diesem Beispiel haben wir ein 2 spaltiges Frameset wobei die 2te Spalte in 2 Reihen unterteilt ist.
menuFrame | infoFrame |
mainFrame |
<frameset cols="200,*">
<frame src="menue.htm" name="menueFrame">
<frameset rows="160,*" >
<frame src="obena.htm" name="infoFrame">
<frame src="untena.htm" name="mainFrame">
</frameset>
</frameset>
Wie man hier sieht werden die Framefenster von oben nach unten aufgeführt und diese Reihenfolge entspricht den zu vergebenden Zahlen im dritten Beispiel ganz oben auf der Seite.
parent.frames[0].location.href="seite.htm";
0 ist somit menuFrame, 1 entspricht infoFrame, 2 steht für mainFrame.
Wenn man auf der Seite menue.htm mittels Links jeweils 2 Seiten in den beiden Framefenstern aufrufen will, ist die naheliegendste Lösung, eine Funktion zu erstellen, die diese beiden Framefenster anspricht. Wobei die Seiten, die aufgerufen werden mit 2 Parametern bestimmt werden. Das wäre eine Möglichkeit, aber vielleicht nicht die beste, mehr dazu später.
function framewechsel(oben, unten){
parent.frames[1].location.href=oben;
parent.frames[2].location.href=unten;
}
Diese Funktion öffnet 2 Seiten in den beiden Framefenstern. Welche Seiten, wird durch die Parameter namens oben, unten bestimmt. Ein Link könnte dann folgendermaßen aussehen.
<a href="javascript:;" onclick="framewechsel('obena.htm','untena.htm')">Seite A</a>
Nehmen wir mal an, der obere Frame ist so eine Art Infoframe oder Untermenü, welches bei bestimmten Seiten immer erscheinen soll. Dann wäre obige Lösung nicht so toll, denn dann müsste jeder Link mit Javascript erstellt werden. Hier wäre es besser, den Aufruf der Seite im infoFrame auf der Seite im mainFrame auszuführen und zwar im Bodytag mit dem Eventhandler onLoad. Die Funktion sollte in einer extra Datei ausgelagert werden und könnte so aussehen.
function frameWechsel(oben){
parent.frames[1].location.href=oben;
}
Der Bodytag, welcher die Seite oben aufruft sieht dann so aus.
<body onload="frameWechsel('obenb.htm')">
Im Unterordner "framelink2" findet ihr das komplette Framesetbeisiel mit Javascript Datei.
Beispiel im Ordner framelink 2