Das Problem:
Es gibt ein Frameset, in dem sollen unter irgendwelchen Umständen beim Laden nicht
die standardmäßig vorgesehenen Dateien erscheinen, sondern andere.
Wie geht das?
- Man gebe dem entsprechenden Link bei Bedarf einen Search-String mit, der
sinnvoller Weise den Namen der in den Frame zu ladenden Datei enthält,
- werte diesen in der "Frame-Set-Datei" aus (onload im FRAMESET)
- und lade die gewünschte Datei in den Frame.
Zum Ausprobieren:
- Das Frameset, das Sie hier vor sich sehen, wurde aufgerufen mit frame_set.htm,
also ganz normal über den Namen der Datei (ohne Search-String).
Standardmäßig erscheint dabei rechts die Datei
frame_rechts1.htm.
Dieser Link tut genau das: STANDARDFALL
- Wenn statt der ersten gleich die zweite Seite zu sehen sein soll, dann braucht man den Search-String.
Die Datei, die gleich in den Frame geladen werden soll, heißt frame_rechts2.htm.
Dieser Name wird als Search-String mitgegeben.
Schauen Sie bitte mal in die Statuszeile, die zeigt Ihnen den kompletten Link zum Aufruf des Framesets mit
SEITE 2.
- Genau so funktioniert es mit
SEITE 3
und der Datei frame_rechts3.htm.
Hier wird allerdings zusätzlich noch ein Anker namens "unten" mitgegeben, der innerhalb von frame_rechts3.htm
sofort angesprungen werden soll. Der ist zusätzlich zum Dateinamen im Search-String enthalten, gekennzeichnet durch
einen Stern (*) davor. Beliebige andere Zeichen erfüllen natürlich den Zweck auch.
Und das ist die Funktion, die die Auswertung vornimmt ("Rechts" ist der Name des rechten Frames):
function tauschen()
{
neu_url = self.location.search;
anker = self.location.search.indexOf('*');
if(neu_url.length > 0)
if (anker == -1)
self.Rechts.location.href =
neu_url.substring(1,neu_url.length);
else
self.Rechts.location.href = neu_url.substring(1,anker)
+ '#'
+ neu_url.substring(anker+1,neu_url.length);
}
Achtung: funktioniert bei MSIE4 (3?) nicht mit protocol file:/, also nicht offline,
weil der in dem Fall self.loacation.search leer läßt.
Anmerkungen:
- Das Anspringen des Ankers bringt mit MSIE3 nichts, weil der es nicht schafft, gleich beim Laden einer Datei
auch noch einen Anker anzuspringen. Das hat nichts mit JavaScript zu tun, bei "normalen"
Seitenaufrufen wie <A HREF="frame_rechts3.htm#anker"> funktioniert das auch nicht.
- Es geht natürlich auch, das Frameset per JavaScript aufzubauen und damit zu vermeiden, daß
bei jedem Aufruf zumindest mit dem Laden der Standarddatei begonnen wird.
Diese Lösung hier hat allerdings den Vorteil, daß die Seiten auch ohne JavaScript noch
benutzbar bleiben.
- Man könnte evtl. als Standard eine ganz leere Datei benutzen oder wenigstens dort nur Links
unterbringen, wenn die notwendig sein sollten, um die anderen Seiten auch ohne JavaScript zu erreichen.