Experiment: Kohlkopf

+Übersicht
+Tools & Links
+HTML-Allgemein
+Tabellen & Layer
+JavaScript/DOM
+CSS
-Frames
Frameinhalt ändern
Frameset bookmarken
Seitentitel ändern
Frameset nachladen
Frameset definieren
Frames-PRO & KONTRA
Frameset verhindern
+Diverses

 
Valid CSS!
Valid HTML 4.01!
 
 
zum Provisorium  

 > Übersicht der Fragen
   > Frames
     > Frameset nachladen
 
 
Wie kann ich beim Aufruf einzelner Dateien das dazugehörige Framesets nachladen
 

Ist eine Webseite als Bestandteil eines Framesets konzipiert, ist es oftmals notwendig, dieses Frameset "nachzuladen".

Speziell Suchmaschinen leiten einen Besucher zu dem gefundenen Dokument und nicht zum dazugehörigen Frameset weiter.

folgende Javascriptzeile:


<script type="text/JavaScript">
<!--
if(self==top){window.location="frameset.htm";}
//-->
</script>

überprüft mit if(self==top), ob das Fenster das oberste Fenster innerhalb der Fensterhierarchie ist.

Ist dies der Fall, bedeutet dies, daß die Seite nicht innerhalb eines Framesets geladen ist und in diesem Beispiel die Seite frameset.htm in das Fenster geladen wird, welche das entsprechende Frameset definiert. Der Nachteil dieser Methode ist, daß das so aufgerufene Frameset in seinem Originalzustand aufgerufen wird.
Ist die Ursprungsseite in diesem Frameset nicht als Inhalt eines Frames definiert, muß der Besucher erst nach dem gewünschten Dokument suchen.

Abhilfe dabei schafft dabei folgende Lösung:

Beispiel
korrektes Frameset nachladen

Quelltext des Javascriptes innerhalb der Unterseiten des Framesets:


<script type="text/javascript">
<!--
if(self==top)
  {
  window.location='index.html'+'?'+'inhalt'+'='+window.location;
  }
//-->
</script>

Erläuterung:

Beim Laden der Seite wird geprüft, ob sich die Seite innerhalb eines Framesets befindet.
Ist dies nicht der Fall, wird das aktuelle Dokument gegen die Seite index.html ausgetauscht, welche das Frameset beinhaltet.
Die URL der index.html wird dabei um einen Parameter ergänzt, welcher den Namen des Frames, in welches die aktuelle Seite gehört, und die Adresse der aktuellen Seite enthält.

Quelltext des Javascriptes innerhalb der index.html


<script type="text/javascript">
<!--
function frame_laden()
{
 if(location.search!='')
   {
   parameter=String(location.search);
   parameter=parameter.substring(1,parameter.length);
   parameter=parameter.split('=');
   if(window.frames[parameter[0]])
    {
    window.frames[parameter[0]].location=parameter[1];
    }
   }
 }
 window.onload=frame_laden;
//-->
</script>

Erläuterung:

Beim Laden des Fensters wird die Function frame_laden() aufgerufen (bei der im Beispiel angewandten Methode des Aufrufs dürfen anschliessend an den Funktionsnamen keine runden Klammern notiert werden!).
Diese Funktion prüft mit if(location.search!=''), ob die aktuell gegebene URL Parameter enthält. Ist dies der Fall, wird von diesem Parameter das erste Zeichen (?) entfernt. Daraufhin wird die so entstandene Zeichenkette anhand des Trennzeichens = in einen Array zerlegt. Dieser Array enthält nunmehr als erstes Element den Namen des Zielframes, und als zweites Element die URL der in dieses Frame zu ladenden Datei, welche im Folgenden in dieses Frame geladen wird.


tip   Für den Fall, daß ein Besucher Javascript in seinem Browser deaktiviert hat, sollte man auf jeden Fall zusätzlich einen herkömmlichen Link auf allen Unterseiten eines Framesets setzen, damit auch diese Besucher den Weg zur richtigen Seite finden:
<noscript>
  <a href="index.htm">Hinweis auf Frameset</a>
</noscript>

Durch das Einbetten des links in das <noscript>- Element erreicht man dabei, daß der Link nur im Bedarfsfall, also wenn der Browser das Javascript nicht ausführen kann, angezeigt wird.


 
 
   
beantwortet von
doktormolle
 
 
zum proVisorium Impressum