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ß!