Teil von SELFHTML aktuell Teil von Artikel Teil von JavaScript

Datei dynamisch in Frameset laden

nach unten Martin Wernecke
nach unten Das Problem
nach unten Lösung Teil 1: Inhalt der Frameseite
nach unten Lösung Teil 2: Inhalt der Frameset-Seite

Martin Wernecke

E-Mail: E-Mail martin@morshausen.de
Homepage-URL: deutschsprachige Seite http://www.morshausen.de

Bei Fragen zu diesem Beitrag bitte den Autor des Beitrags kontaktieren!

nach obennach unten

Das Problem

Ein Manko bei der Verwendung von Framesets besteht in der unbefriedigenden direkten Verweisbarkeit von Frameseiten durch andere Publikationen. Diese Problematik wird in SELFHTML bei den Seite Tipps zum Umgang mit Frames behandelt.
Ein Beispiel: Unter deutschsprachige Seite http://www.morshausen.de/index.htm erreicht man die Homepage des schönen Dorfes Morshausen im Hunsrück. Diese ist als Frameset realisiert. So können Besucher über eine Menüleiste beispielsweise eine Seite mit Nachrichten aufrufen, die in dem Hauptframe angezeigt wird. Referenziert man diese Seite direkt, beispielsweise indem man in die Adresszeile des Browsers deutschsprachige Seite http://www.morshausen.de/news/news.htm eingibt, so wird die Nachrichtenseite ohne die umgebenden Frames angezeigt. Dies ist nicht nur optisch unerwünscht - der beispielsweise über eine Suchmaschine auf diese Seite gestoßene Leser hat nun nicht die Möglichkeit, über den Navigationsframe auf andere Angebote der Homepage zuzugreifen.

nach obennach unten

Lösung Teil 1: Inhalt der Frameseite

Mit ein paar JavaScript-Zeilen läßt sich dieser ungewünschte Effekt beheben. Im ersten Schritt muß man dazu in jeder Frameseite ein Script integrieren, das nach dem Laden der Seite überprüft, ob auch ein Frameset existiert. Falls nicht, wird das Frameset nachgeladen. Gleichzeitig wird dem Frameset mitgeteilt, von welcher Seite aus das Nachladen erfolgt ist.

Ein Beispiel:

<head>
...
<SCRIPT language="JavaScript">
<!--
 function checkFrameset() {
  if(!parent.xyzVerweisframe)
   location.href="http://www.xy.de/unterverzeichnisXY/index.htm?" + location.pathname;
 }
//-->
</SCRIPT>
</head>
<body onLoad='checkFrameset()'>
...

Erläuterung:

Mit if(!parent.xyzVerweisframe) wird überprüft, ob ein Frame namens 'xyzVerweisframe' existiert. Setzen Sie anstelle von xyzVerweisframe den Namen eines Frames, den Sie zur Identifikation des Framesets auserkoren haben. Ist dieser nicht vorhanden, wird zur Frameseite verzweigt. Mit location.href wird die neue URL festgelegt. Als Ziel geben Sie die URL der Seite an, die das Frameset enthält, gefolgt von einem Fragezeichen. An dieses Fragezeichen wird mit location.pathname der Pfad der aktuellen Seite angehängt. Dadurch wird es möglich, daß im Anschluß die aktuelle Seite wieder im Frameset angezeigt werden kann.

nach obennach unten

Lösung Teil 2: Inhalt der Frameset-Seite

Die Seite mit der Definition des Framesets enthält ihrerseits eine Funktion, die nach dem Laden gestartet wird. Diese überprüft, ob der Verweis, über den das Frameset adressiert wurde, eine mit einem Fragezeichen angehängte Zeichenkette enthält. Wenn ja, dann wird diese Zeichenkette (der Pfad der aufrufenden Frameseite) extrahiert und die Frameseite in den entsprechenden Frame geladen.

Ein Beispiel:

<head>
...
<SCRIPT language="JavaScript">
<!--
 function checkFramecall() {
  var Adressanhang=location.search;
  if(Adressanhang)
  frames.xyzHauptframe.location.href=Adressanhang.substring(1,Adressanhang.length);
 }
//-->
</SCRIPT>
</head>

<frameset cols="60,*" onLoad="checkFramecall()">
  <frame name="xyzVerweisframe" src="links.htm">
  <frame name="xyzHauptframe" src="start.htm">
</frameset>

...

Erläuterung:

Das Objekt location enthält in der Eigenschaft location.search einen eventuell mit Fragezeichen an die Adresszeile angehängten String. Wenn dieser nicht leer ist, also den Pfad der aufrufenden Frameseite enthält, wird diese mit frames.xyzHauptframe.location.href=Adressanhang.substring(1,Adressanhang.length) in den Frame namens 'xyzHauptframe' geladen. Die Anwendung der Funktion substr() am Ende der Zeile entfernt das Fragezeichen am Anfang des String.

Teil von SELFHTML aktuell Teil von Artikel Teil von JavaScript

© 2007 bereichsübergreifende Seite Impressum