Frames mit JavaScript nachladen

Quelltext von loadinframeset.js

Dies ist die Auflistung der Datei beispiele/loadframes.js, die in den HEAD-Teil jeder frame-Datei eingebunden werden muß um das umgebende Frameset korrekt nachzuladen.

Im folgenden Quelltext sind Kommentare grün, Funktionsdeklarationen sind fett und rot markiert.
/* -------------------------------------------------------------------------
 * Frameset-Lader
 * von Ulrich Kritzner, 2003
 * (c) 2003 Ulrich Kritzner.
 * Die Verbreitung dieser Datei unterliegt der GNU General Public License.
 *
 * Frameset Loader
 * Written by Ulrich Kritzner, 2003
 * Copyright 2003 by Ulrich Kritzner.
 * Redistribution of this file is permitted under the GNU General Public License.
 * ------------------------------------------------------------------------- */

/* -------------------------------------------------------------------------
 * Diese JavaScript-Datei MUSS vom jeweiligen Frame
 * eingebunden werden, um den Frameset-Lader verwenden zu koennen.
 * Dies muss im HEAD-Teil vorgenommen werden.
 * ------------------------------------------------------------------------- */

var NewURL="";
var FL_InitFunction,FL_URL,FL_Frame;
var FL_CountDown=10;

function loadFrame(FrameNum)
/* Frame laden (wenn Browser framefaehig und Ziel angegeben) */
{
  var locus;
/* wenn keine Frames, dann abbrechen */
  if (typeof(parent.frames)=="undefined")
    return;
/* wenn zu wenige Frames, dann abbrechen */
  if (parent.frames.length<=FrameNum)
    return;
/* wenn schon ausgetauscht, dann abbrechen */
  if (typeof(parent.correctframe)!="undefined")
    return;
  parent.correctframe=1;
  locus=parent.location.href.search(/locus=.+/);
/* wenn locus nicht gefunden, dann abbrechen */
  if (locus<0)
    return;
  locus+=6;
  NewURL=parent.location.href.substr(locus,parent.location.href.length);
  if ((typeof(parent.frames[FrameNum].location.replace)=="function")||
    (typeof(parent.frames[FrameNum].location.replace)=="object"))
    parent.frames[FrameNum].location.replace(NewURL);
  else
    parent.frames[FrameNum].location.href=NewURL;
}

function waitForFrameset()
/* wartet auf das Frameset */
{
  var ToWait=0;
  if (typeof(parent.frames)=="undefined")
    ToWait=1;
  else
    if (typeof(parent.frames.length)=="undefined")
      ToWait=1;
  if ((FL_CountDown>0)&&ToWait)
  {
    FL_CountDown--;
    window.setTimeout("waitForFrameset();",250);
    return;
  }
  _loadInFrameset(FL_URL,FL_Frame);
  if (typeof(FL_InitFunction)=="function"||
      typeof(FL_InitFunction)=="object")
    FL_InitFunction();
}

function loadInFrameset(URLFrameset,FrameNum,InitFunction)
/* Beginnt das Laden des Framesets
     Attribute:
       URLFrameset: URL der Frameset-Seite
       FrameNum: Nummer des Frames (beginnend mit 0)
       InitFunction: Funktion zum Initialisieren nach Ladevorgang */
{
  FL_URL=URLFrameset;
  FL_Frame=FrameNum;
  FL_InitFunction=InitFunction;
  waitForFrameset();
}

function _loadInFrameset(URLFrameset,FrameNum)
/* Frameset oeffnen, wenn nicht bereits im Frameset,
   sonst richtigen Frame aktivieren
     Attribute:
       URLFrameset: URL der Frameset-Seite
       FrameNum: Nummer des Frames (beginnend mit 0) */
{
  var ToLoad=0,locus;
  if (typeof(parent.frames)=="undefined")
    ToLoad=1;
  else
    if (parent.frames.length<2)
      ToLoad=1;
/* wenn noch kein Frameset geladen ist, dann nachladen */
  locus=parent.location.href.search(/locus=.+/);
  if (locus>=0)
    ToLoad=0;
  if (ToLoad)
  {
    NewURL=URLFrameset+"?locus="+window.location.href;
    if ((typeof(window.location.replace)=="function")||
        (typeof(window.location.replace)=="object"))
      parent.location.replace(NewURL);
    else
      parent.location.href=NewURL;
  }
/* wenn Frameset schon geladen ist, dann richtigen Frame laden */
  else
    loadFrame(FrameNum);
}
Autor: Ulrich Kritzner