Frames perfekt mit JavaScript verwaltenQuelltext von frameman.js |
![]() ![]() ![]() |
Dies ist die Auflistung der Datei beispiele/frameman.js,
die in den HEAD-Teil der frameset-Datei eingebunden werden muß
um die untergeordneten frames zu verwalten. Im folgenden Quelltext sind Kommentare grün markiert. |
![]() ![]() ![]() ![]() |
/* ------------------------------------------------------------------------- * Framesteuerung * von Ulrich Kritzner, 2002 * (c) 2002 Ulrich Kritzner. * Die Verbreitung dieser Datei unterliegt der GNU General Public License. * * Frame Control * Written by Ulrich Kritzner, 2002 * Copyright 2002 by Ulrich Kritzner. * Redistribution of this file is permitted under the GNU General Public License. * ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- * Diese JavaScript-Datei MUSS von der Frames-Haupseite, * also der Seite, auf der das Frameset definiert wird, * eingebunden werden, um den Frame-Manager verwenden zu koennen. * Dies muss im HEAD-Teil vor der Definition des Framesets * vorgenommen werden. * ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- * Deklarationen globaler Variablen: * ------------------------------------------------------------------------- */ var framenums,framelist; var useReplace=0; /* ------------------------------------------------------------------------- * An InitFrameMan muss ein Array der Nummern der Frames uebergeben werden, * die vom Framemanger verwaltet werden sollen. * Dann setzt es das Array aller zu verwaltenden Framenummern. * Dies muss in der Frameset-Quelldatei * vor der Deklaration des Framesets geschehen. * Beispiel: * InitFrameMan(Array(0,1,2)) * ------------------------------------------------------------------------- */ function InitFrameMan(_framenums) { framenums=_framenums; framelist=Array(); /* wenn das Objekt window.location existiert: */ if (window.location) /* und wenn window.location.replace als Funktion existiert: */ if ((typeof(window.location.replace)=="function")|| (typeof(window.location.replace)=="object")) /* dann erlaube die Benutzung der replace-Funktion: */ useReplace=1; } /* ------------------------------------------------------------------------- * An SetFrameURLs muss einen String mit dem Namen des Themas * und ein Array von URL-Strings uebergeben werden. * Dann legt es ein neues Thema mit den zugehoerigen URLs an * und fuegt es an das Themenarray an. * Dies muss in der Frameset-Quelldatei * vor der Deklaration des Framesets geschehen. * Beispiel: * SetFrameURLs("Thema1",Array("Thema1a.html","Thema1b.html","Thema1c.html")) * ------------------------------------------------------------------------- */ function SetFrameURLs(_theme,_URLs) { /* leeres Objekt erzeugen: */ var entry=new Object(); /* Objektfelder anlegen: */ entry.theme=_theme; entry.URLs=_URLs; /* Objekt an das Manager-Array anfuegen: */ framelist[framelist.length]=entry; } /* ------------------------------------------------------------------------- * An ManageFrames muss das aktuelle Window-Objekt * sowie einen String mit dem Namen des Themas uebergeben werden. * Dann setzt es alle anderen Frames auf die dem Thema entsprechenden Inhalte. * Dies muss in jeder einzelnen Framedatei * durch das "onLoad"-Ereignis ausgeloest werden, * sonst scheitert die Frameverwaltung. * Beispiel: * parent.ManageFrames(window,"Thema1") * ------------------------------------------------------------------------- */ function ManageFrames(_window,_theme) { var i,f=0; /* aktuelles Thema setzen, damit die Seite nicht mehrfach upgedatet wird: */ _window.theme=_theme; /* Array aller Themen durchgehen: */ for (i=0;i<framelist.length;i++) { if (framelist[i].theme==_theme) f=i; } /* wenn das Thema nicht definiert ist: Funktionsabbruch */ if (framelist[f].theme!=_theme) return; /* alle zu verwaltenden Frames manipulieren: */ for (i=0;i<framenums.length;i++) /* wenn ein Frame noch nicht zum Thema gehoert: */ if (typeof(frames[framenums[i]].theme)=="string") if (frames[framenums[i]].theme!=_theme) { /* Thema auf Frame setzen, um Mehrfachupdates zu vermeiden: */ frames[framenums[i]].theme=_theme; /* wenn die replace-Funktion verwendet werden soll: */ if (useReplace) frames[framenums[i]].location.replace(framelist[f].URLs[i]); /* ansonsten (MSIE) ganz normal Seiten-URL setzen und Unbrauchbarkeit der history in Kauf nehmen: */ else frames[framenums[i]].location.href=framelist[f].URLs[i]; /* Thema auf Frame setzen, um Mehrfachupdates zu vermeiden: */ frames[framenums[i]].theme=_theme; } } |
![]() ![]() ![]() |
Autor: Ulrich Kritzner |