Schwebende Navigations- und Zusatzseiten / automatischer Aufruf ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Das folgende Script-Gemenge bewirkt, daß untergliederte, mit getrennten Navigationsmenüs geführte Seiten sowohl innerhalb wie außerhalb eines Framesets funktionieren. Das jeweilige Navigationsmenü kann darüber hinaus automatisch geladen werden, außerhalb des Framesets als frei schwebendes Fenster. Des weiteren werden die Seiten innerhalb und außerhalb von Framesets automatisch an unterschiedlichen Stellen geöffnet. Unabhängig 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 später beliebig vielen zusätzlichen Inhaltsseiten mit dazugehörigen Navigationsseiten. Die Namen sind frei wählbar. 1) In der Frameset-Seite (hier "frames.htm") kommen die Zeilen: Das Frameset Das Frameset erhält hier so grundsätzlich den Fensternamen "rahmen"; es besteht hier aus zwei Fenstern mit den Namen "menu" (links, für die Navigation; Startseite: menu1.htm) und "page" (rechts, für den Inhalt; Startseite: start.htm). 2) Die Startseite "menu1.htm" erhält in HEAD-Bereich das Script: Manche Freespace-Anbieter erlauben auf HTML-Seiten keine 'window.open'- Funktion; dann muß das Script zwischen mit Hilfe eines normalen Texteditors in eine extra JavaScript-Datei, z.B. "hmenue.js", geschrieben und anschließend mit den Zeilen: im HEAD-Bereich der Datei "menu1.htm" aufgerufen werden. 3) Die Startseite "menu1.htm" erhält außerdem den Verweis: Frames ausschalten 4) Alle weiteren Menü-Seiten (menu2.htm ... menuX.htm) erhalten im -Tag die Passage: und darunter den Verweis: Zurueck zum Inhalt um auch außerhalb des Framesets eine übergeordnete Navigation zu erlauben. 5) Die Startseite "start.htm" erhält im -Tag die Passage: 6) und darunter den Verweis: Frameset aufrufen 7) Die Startseite "start.htm" sowie alle weiteren Inhaltsseiten (inhalt1.htm ... inhaltX.htm) erhalten im HEAD-Bereich den Scriptaufruf: Diese ausgelagerte JavaScript-Datei namens "fenster.js" wird mit Hilfe eines normalen Texteditors (z.B. Notepad) geschrieben und enthält folgende Zeilen: 1) ohne die --------! 2) ggf. Zeilenumbrüche aus den einzelnen Javascript-Funktionen herausnehmen! -------- // 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 für die Inhalt - Seiten window.name = 'page'; // So erhält die Inhaltsseite immer den Namen page // Speziell für 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; } } -------- So weit, so gut. 8) Die Script-Funktionen werden nun wie folgt aufgerufen: Jede Inhaltsseite Inhalt1.htm ... InhaltX.htm erhält einen Link, der das für diese Seite zuständige Navigationsmenü Menu2.htm ... MenuX.htm aufruft: Mein Menü 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 zusätzliche oder externe HTML-Seite kann außerdem über: Was Auch Immer in jedem gewünschten Fenster angezeigt werden, auch verschiedene in dem selben; die hier im Script "neufenster" genannte Funktion kann unabhängig von den anderen Funktionen benutzt werden. 3 -> Um das jeweilige Navigationsmenü automatisch laden zu lassen, schreibt man für dieses einen Aufruf in den -Tag jeder Inhaltsseite: 4 -> Die Seiten funktionieren selbst bei abgeschaltetem JavaScript, aber nicht so bequem, da dann der Benutzer die Größe der Fenster selber einstellen muß und diese sich u. U. gegenseitig verdecken. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ NACHTRAG 2011 PopUp-Seiten immer sichtbar machen Das Problem: PopUp-Hilfeseiten erscheinen immer nur beim ersten Aufruf über der aufrufenden Seite (d.h. im Fokus); beim nächsten Aufruf bleiben sie unsichtbar darunter, so daß der Besucher den Eindruck eines Fehlers hat. Dieses Problem (ein PopUp-Fenster erscheint nur beim ersten Aufruf sichtbar vor dem Hauptfenster; Beim nochmaligen Anklicken des selben Verweises geschieht scheinbar gar nichts, da die Seite sich bereits geöffnet unsichtbar hinter dem Hauptfenster befindet - es sei denn, sie wurde zwischenzeitlich wieder geschlossen) läßt sich mit dem obigen "neufenster"- JavaScript beheben - wenn man denn die Seiten vollständig selber schreiben kann, und sie nicht, wie heute so oft, aus einer Datenbank generiert werden. Kann man jedoch auf der Seite wenigstens einige Zeilen JavaScript-Code zusätzlich unterbringen (direkt auf der Seite oder über eine externe .JS-Datei), so läßt sich dieses Problem auch manchmal so beheben: Dabei geschieht Folgendes: · Die Datei wird nach dem Laden nach spezifischen Verweisen durchsucht; Hier: nach Bildern (Pfeilgrafiken) mit einem bestimmten Dateinamen (dazu muß die Seite bereits vom Browser gelesen worden sein- das JavaScript steht also am Schluß des Quelltextes und nicht wie sonst im HEAD- Bereich) · Diese Verweis-Grafiken werden mit einer focus-Funktion belegt, welche die damit aufgerufenen Seite jedes Mal in den Vordergrund bringt. Das funktioniert mit den gängigen und auch mit älteren Browsern. Allerdings macht der MICROSOFT® Internet Explorer (MSIE) mal wieder eine Extratour- aber mit einem absichtlich eingebauten Fehler im JavaScript- Code und der Unterdrückung der Fehlermeldung geht's auch da. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Teil 2 ¯¯¯¯¯¯ Das Script unten auf den Seiten: bzw: prüft, in welchem Kontext die jeweiligen Seiten geöffnet werden und gibt ihnen vor, je nachdem ob sie außerhalb 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 vollständige Laden der Seite nicht zu behindern. Bei Seiten, die gleichzeitig noch andere Funktionen ausführen, ist es besser, die hier "xtra" genannte Onload-Funktion in diesem Rahmen unten noch einmal zu wiederholen, da sie sonst unter Umständen von Netscape "vergessen" wird. --- Hinrichs Mai 2002