Zwei Frames gleichzeitig ändern

Um zwei frames gleichzeitig zu ändern, gibt es mehrere Möglichkeiten.

JavaScript pur

Bei dieser Variante wird die eigentliche Funktion nur durch JavaScript gesteuert. Die verwendete Schreibweise sorgt aber dafür, daß bei deaktiviertem JavaScript wenigstens die wichtigere Seite geladen wird:

<head>
<script type="text/javascript">
<!--
function zweiFrames(top_url,main_url)
{
parent.Top.location.href = top_url;
parent.Main.location.href = main_url;
}
//-->
</script>
</head>
<body>
<a href="wichtigere_Seite.htm" target="framename" onclick="zweiFrames('pfad/datei1','pfad/datei2'); return false;">Link1</a>
<a href="wichtigere_Seite.htm" target="framename" onclick="zweiFrames('pfad/datei3','pfad/datei4'); return false;">Link2</a>
<a href="wichtigere_Seite.htm" target="framename" onclick="zweiFrames('pfad/datei5','pfad/datei6'); return false;">Link3</a>
<a href="wichtigere_Seite.htm" target="framename" onclick="zweiFrames('pfad/datei7','pfad/datei8'); return false;">Link4</a>
</body>

Mit der ersten Angabe („Top“) gibst Du den Namen des ersten frames, der geändert werden soll, an, mit dem zweiten („Main“) läuft das analog. Du musst nur darauf achten, im frameset allen frames einen Namen zu geben.

„Top“ und „Main“ sind Platzhalter für die tatsächlichen Framenamen.

Das Skript ist auch problemlos auf mehrere frames erweiterbar, der Code sähe bei drei frames dann so aus:

<head>
<script type="text/javascript">
<!--
function mehrFrames(top_url,main_url,bottom_url)
{
parent.Top.location.href = top_url;
parent.Main.location.href = main_url;
parent.Bottom.location.href = bottom_url;
}
//-->
</script>
</head>
<body>
<a href="wichtigere_Seite.htm" target="framename" onclick="mehrFrames('datei1','datei2','datei3'); return false;">Link1</a>
<a href="wichtigere_Seite.htm" target="framename" onclick="mehrFrames('datei4','datei5','datei6'); return false;">Link2</a>
<a href="wichtigere_Seite.htm" target="framename" onclick="mehrFrames('datei7','datei8','datei9'); return false;">Link3</a>
<a href="wichtigere_Seite.htm" target="framename" onclick="mehrFrames('datei10','datei11','datei12'); return false;">Link4</a>
</body>

HTML und JavaScript

Die wohl beste Lösung

Die wohl intelligenteste und beste Lösung wäre es, wenn Du einfach die Hauptseite mit einem normalen Verweis aufrufst und im body-tag per onload mit JavaScript die zweite Seite. Dadurch wird der berüchtigte Effekt derartiger Skripte vermieden, daß zwar zwei frames gleichzeitig geladen werden können, aber beim Zurückgehen mit dem Zurück-Button des Browsers immer nur einer der beiden frames geändert wird. Sinnvollerweise ruft man immer die wichtigere Seite mit dem Verweis auf. Der Aufruf im body-tag sollte so aussehen:

<body onload="top.framename.location.href='zweite_seite.htm';">

Eine weitere gute Lösung

Eine weitere gute Variante ist, dem Verweis beides – HTML-Verweis und JavaScript-Funktion – mitzugeben:

<a href="die_wichtigere_Seite.htm" target="zielframe" onclick="top.framename.location.href='die_zweite_seite.htm'">

Du solltest Dir aber auf alle Fälle bewusst sein, dass solche Konstrukte nur funktionieren, wenn JavaScript aktiviert ist.

Solltest Du eines dieser Skripte verwenden, solltest Du auch verstehen, wie Du die einzelnen frames ansprechen kannst. Dazu dieser Verweis: http://selfaktuell.teamone.de/tippstricks/javascript/fensterzugriff/index.htm

Zusätzlich wäre auch die Lektüre zum Eventhandler onload() sinnvoll: http://selfhtml.teamone.de/javascript/sprache/eventhandler.htm#onload

Viel Spaß!
Jane & Kurt

Angelegt: Vor meiner Zeit
Letzte Bearbeitung: 2005/06/11 / 14:10:56