
Schwebende Navigations- und Zusatzseiten / automatischer Aufruf



Das folgende Script-Gemenge bewirkt, da untergliederte, mit getrennten Navigationsmens gefhrte Seiten sowohl innerhalb wie auerhalb eines Framesets funktionieren. Das jeweilige Navigationsmen kann darber hinaus automatisch geladen werden, auerhalb des Framesets als frei schwebendes Fenster. 

Des weiteren werden die Seiten innerhalb und auerhalb von Framesets automatisch an unterschiedlichen Stellen geffnet. 

Unabhngig davon ffnet es externe Seiten, auch fremde, wiederholt in immer den selben Fenstern und stellt diese automatisch in den Vordergrund. 

				---


Teil 1


Es wird zu diesem Zweck ein einfaches Frameset erstellt, hier bestehend aus drei Teilen (frames.htm, menu1.htm und start.htm) und spter beliebig vielen zustzlichen Inhaltsseiten mit dazugehrigen Navigationsseiten. Die Namen sind frei whlbar. 


1) In der Frameset-Seite (hier "frames.htm") kommen die Zeilen:

<HTML>
<HEAD>
<TITLE> Das Frameset </TITLE>
<BASE TARGET="page">
<script language="javascript" type="text/javascript">
<!--
{window.name = 'rahmen';}
//-->
</script>
</HEAD>
<FRAMESET COLS="25%,75%" border=1 framespacing=1>
<FRAME SRC="menu1.htm" NAME="menu" MARGINWIDTH="10" MARGINHEIGHT="10">
<FRAME SRC="start.htm" NAME="page" MARGINWIDTH="15" MARGINHEIGHT="10" frameborder=1>
</FRAMESET>
</HTML>

Das Frameset erhlt hier so grundstzlich den Fensternamen "rahmen"; es besteht hier aus zwei Fenstern mit den Namen "menu" (links, fr die Navigation; Startseite: menu1.htm) und "page" (rechts, fr den Inhalt; Startseite: start.htm).


2) Die Startseite "menu1.htm" erhlt in HEAD-Bereich das Script:

<script language="javascript" type="text/javascript">
<!--
if (top == self)
{
window.open('start.htm', 'page');
self.close();
}
else
{
parent.page.location.href="start.htm";
}
//-->
</script>
</HEAD>

Manche Freespace-Anbieter erlauben auf HTML-Seiten keine 'window.open'-Funktion; dann mu das Script zwischen <!-- und //--> mit Hilfe eines normalen Texteditors in eine extra JavaScript-Datei, z.B. "hmenue.js", geschrieben und anschlieend mit den Zeilen:

<script  language="JavaScript" type="text/javascript" src="hmenue.js"></script>
</HEAD>

im HEAD-Bereich der Datei "menu1.htm" aufgerufen werden.


3) Die Startseite "menu1.htm" erhlt auerdem den Verweis: 

<A HREF="start.htm" TARGET="_parent">Frames ausschalten</A>


4) Alle weiteren Men-Seiten (menu2.htm ... menuX.htm) erhalten im <BODY>-Tag die Passage: 

<BODY onload="self.focus();" ... > 

und darunter den Verweis: 

<A HREF="menu1.htm" >Zurueck zum Inhalt</A>

um auch auerhalb des Framesets eine bergeordnete Navigation zu erlauben. 


5) Die Startseite "start.htm" erhlt im <BODY>-Tag die Passage: 

<BODY onload="self.focus();" ... > 


6) und darunter den Verweis: 

<A HREF="frames.htm" Target="_top">Frameset aufrufen</A>


7) Die Startseite "start.htm" sowie alle weiteren Inhaltsseiten (inhalt1.htm ... inhaltX.htm) erhalten im HEAD-Bereich den Scriptaufruf:

<script  language="JavaScript" type="text/javascript" src="fenster.js"></script>
</HEAD>

Diese ausgelagerte JavaScript-Datei namens "fenster.js" wird mit Hilfe eines normalen Texteditors (z.B. Notepad) geschrieben und enthlt folgende Zeilen (ohne die XXX):


XXXXXXXXXXXX

// Allgemein
function neufenster(url, ziel)
{
dasfocus = window.open(url, ziel, "width=400,height=250,top=50,left=50,resizable=yes,scrollbars=yes,menubar=yes,location=yes,toolbar=yes");
dasfocus.focus();
}

// Speziell fr die Inhalt - Seiten
window.name = 'page';
// So erhlt die Inhaltsseite immer den Namen page

// Speziell fr das ein- oder ausgeschaltete Frameset
function xtra(url, ziel)
{if (top == self)
{
extramenu = window.open(url, ziel, "width=150,height=250,top=50,left=450,resizable=yes,scrollbars=yes,menubar=yes,location=yes,toolbar=yes");
extramenu.focus();
}
else
{
parent.menu.location.href=url;
}
}


XXXXXXXXXXXX


So weit, so gut. 

8) Die Script-Funktionen werden nun wie folgt aufgerufen: 

Jede Inhaltsseite Inhalt1.htm ... InhaltX.htm erhlt einen Link, der das fr diese Seite zustndige Navigationsmen Menu2.htm ... MenuX.htm aufruft: 

<A HREF="MenuX.htm" OnClick="xtra('MenuX.htm', 'menu')" TARGET="menu">Mein Men</A>


Fertig. 

****

1 -> Nun kann ziemlich hemmungslos herumgezappt werden; man kann die selben Seiten mit und ohne Frameset anbieten; sie funktionieren immer, auch im direkten Wechsel mit und ohne Rahmen. 

2 -> Jede weitere zustzliche oder externe HTML-Seite kann auerdem ber:

<A HREF="http://www.WasAuchImmer.de" OnClick="neufenster('http://www.WasAuchImmer.de', 'WasAuchImmerFenster')" TARGET="WasAuchImmerFenster">Was Auch Immer</A> 
     
in jedem gewnschten Fenster angezeigt werden, auch verschiedene in dem selben; die hier im Script "neufenster" genannte Funktion kann unabhngig von den anderen Funktionen benutzt werden.

3 -> Um das jeweilige Navigationsmen automatisch laden zu lassen, schreibt man fr dieses einen Aufruf in den <BODY>-Tag jeder Inhaltsseite: 

<BODY onload="xtra('menuX.htm', 'menu')"  ... > 

4 -> Die Seiten funktionieren selbst bei abgeschaltetem JavaScript, aber nicht so bequem, da dann der Benutzer die Gre der Fenster selber einstellen mu und diese sich u. U. gegenseitig verdecken. 



Teil 2


Das Script unten auf den Seiten:


<script language="javascript">

<!--

if((self.location.hash == "") && (top.document.title != "Mein Frameset Titel"  ))
{ self.location.hash = "Oben"; }

//-->

</script>


</BODY></HTML>


bzw:


<script language="javascript">

<!--

if((self.location.hash == "") && (top.document.title == "Mein Frameset Titel"  ))
{ self.location.hash = "Oben";
  xtra('Menu1.htm', 'menu'); }

//-->

</script>


</BODY></HTML>

 
prft, in welchem Kontext die jeweiligen Seiten geffnet werden und gibt ihnen vor, je nachdem ob sie auerhalb oder innerhalb eines bestimmten Framesets geladen werden, gegebenenfalls zu einer vordefinierten Sprungmarke (hier: "Oben") zu wechseln. Das dient dazu, bei einzelnstehenden Seiten notwendige Logos, Navigationsleisten etc. am Anfang der Seiten in Framesets nicht erscheinen zu lassen. 

Diese Funktion mu unten stehen, um das vollstndige Laden der Seite nicht zu behindern. Bei Seiten, die gleichzeitig noch andere Funktionen ausfhren, ist es besser, die hier "xtra" genannte Onload-Funktion in diesem Rahmen unten noch einmal zu wiederholen, da sie sonst unter Umstnden von Netscape "vergessen" wird. 

				---


Jrgen Hinrichs 
Mai 2002 

                                           


