Frameset nachgeladen1

Einzelne Frameseiten werden manchmal auch über Suchmaschinen gefunden. Der Besucher ist enttäuscht oder verwirrt, weil vieles fehlt und meist auch die komplette Navigation. Mit Hilfe einiger JavaScripte kann man das Problem lösen.

Beim Aufruf der Seite, nennen wir sie »Unterseite«, muss zuerst festgestellt werden, ob sie in einem Frameset angezeigt wird oder allein steht. Ansonsten käme es zu merkwürdigen Effekten. Dazu wird im Frameset die Variable »FramesetGeladen« definiert. Sie kann von den anderen Seiten abgefragt werden.

var FramesetGeladen = 1

Ist beim Aufruf der Unterseite diese Variable nicht vorhanden, muss das Frameset nachgeladen werden.

Die Abfrage findet in jeder Einzelseite statt, in unserem Beispiel also in der unterseite.html. Dafür dient das folgende JavaScript, das im Header der unterseite.html stehen muss. Dabei können die fett geschriebenen Bereiche an die eigenen Bedürfnisse angepasst werden.

< script language="JavaScript">
< !--
var ZielDatei = "frameset.html?unterseite.html";
if (!top.FramesetGeladen){
if(document.images)
top.location.replace(ZielDatei);
else
top.location.href = ZielDatei ;
}
//-- >
< /script>

Im JavaScript des Framesets wird neben der oben schon beschrieben Definition der Variablen auch für das Laden der Seite gesorgt. Das geschieht mit der Funktion SeiteLaden(). Dieses JavaScript gehört in den Head-Bereich des Framesets. »Rechts« bezeichnet das Frame, in dem die Unterseite angezeigt werden soll. Auch das kann den eigenen Erfordernissen entsprechend geändert werden.

< SCRIPT LANGUAGE="JavaScript">
< !--
var FramesetGeladen = 1;
function SeiteLaden() {
if(self.location.search.length > 0) {
var laenge = self.location.search.length;
var Neue_url = self.location.search.substring(1,laenge);
if (document.images)
self.Rechts.location.replace(Neue_url);
else
self.Rechts.location.href = (Neue_url);
}
}
//– >
< /SCRIPT>

Im Frameset-Tag wird das eigentliche Nachladen der Unterseite ausgeführt.
< frameset onLoad="SeiteLaden(); return true;" cols="25%,*" >

Leave a Reply