Neue Version
Tidy zur Codekontrolle
nojsmenu.html erstellen
Browser - bekannte Probleme
JS-Menü-Script in .js-Datei auslagern
JS-Menü per Link schließen
Start-Dateien - MenueFrame/KlappFrame
Die ganze Datei anpassen
Counter - Besucherzähler.


F A Q JS-Menü 1.4.1


Neue Version

Bisher ist es noch nicht bekannt, wann die nächste Version von JS-Menü zu Verfügung gestellt werden wird.
Allerdings gibt es inzwischen die JS-Menü 1.5 beta 3 Bitte beachten: Keine Haftung für Inhalte fremder Internetseiten die stabil läuft und vor allem kleine Verbesserungen (Ordnertiefenlimitbeschränkung aufgehoben, Framesetprobleme mit IE 5.x beseitigt uam.) enthält (Quelle: JS-Menue-Newsletter 01/2002).
Wichtiger Hinweis: Das JS-Menü Version 1.5 beta 3 wird von Netscape 6.x nur dann richtig interpretiert, wenn das JS-Menü-JavaScript nicht in einer .js-Datei ausgelagert ist; hier kommt es sonst zu zahlreichen Fehlermeldungen.
Daneben entwickelt Frank Bergermann fleißig am JS-Menü. Sei aktueller Stand ist unter http://www.bitwelt.de/ Bitte beachten: Keine Haftung für Inhalte fremder Internetseiten oder angepasst für diese WebSite nur Internet Explorer einsehbar.


Tidy zur Codekontrolle

Wer mit Tidy schon mal versucht hat, die JS-Menü-Datei zu überprüfen, wird festgestellt haben, dass eine Reihe von Fehlermeldungen auftauchen.
Zuallererst einmal sind es die Zeichenketten </, die Tidy reklamiert. Diese können »entschärft« werden durch <\/. Alternativ bietet sich das Auslagern des JavaScripts in eine externe Datei an.
Die Script-Deklaration muss um type="text/javascript" erweitert werden; wegfallen darf dafür language="JavaScript" (ist nicht Bestandteil des HTML 4.01-Standards).

Die weiteren Fehlermeldungen, hier allerding für das JS-Menü 1.5 beta 3, zeigt folgende Aufstellung.
tidy-Fehlermeldungen
Anmerkung: Die Zeilenangabe ist individuell und nicht übertragbar.
Die obigen Fehler sind zum Teil tatsächlich berechtigt in dem Sinne, dass sie im HTML-Standard nicht vorgesehen sind. Hierzu gehören:

Die anderen »Fehler« sind »tidy-immanent« soll heißen, sie treten auf, weil Tidy versucht, die gefundenen Fehler zu korrigieren und scheitert daran.

Die dynamische Frameset-Erstellung ist für das JS-Menü wesentlich - sie funktioniert auch mit den meisten Browsern - ist aber nicht HTML-Standardkonform. Frames werden von der W3C ab XHTML 2.0 in Form des neuen Standards XFrames unterstützt.

Technisch gesehen ist das JS-Menü die bisher interessanteste Lösung für ein »explorer-artiges« Navigationssystem, da es »reines JavaScript« ohne DHTML oder CSS-Parameter visibility auskommt, und seine Entwicklungszukunft hat durchaus was: JS-Menü-Betaversion von Frank Bergermann mit vielen neuen Optionen, wie browser- und systemspezifischen Icons, OnMousOver-Effekten u.v.a.m. (Original: Homepage von Frank Bergermann Bitte beachten: Keine Haftung für Inhalte fremder Internetseiten).


nojsmenu.html erstellen

Die Datei nojsmenu.html kann am einfachsten mit der aktuellen Version von JS.Edit erstellt werden.


Browser - bekannte Probleme

Opera ist nicht in der Lage, den Code von JS-Menü korrekt zu interpretieren. In der nächsten Version von JS-Menü (1.5) wird ein entsprechendes handling eingebaut sein.
Internet-Explorer ab Version 5 hat Schwierigkeiten mit der Position der Framesets (A+B). Siehe: Frameset-Optionen
Netscape Version 6.0.x / 6.1.x ist nicht in der Lage, das JS-Menü korrekt in den MenuFrame zu schreiben. Damit hat der Navigator in bezug auf Version 4.x verlernt.
Probleme gibt es auch bei Macintosh-Systemen meist in Kombination mit IE Internet Explorer 5.x. Hier werden die relativ geschriebenen Verknüpfungen fehlerhaft gedeutet und die Verlinkung weist in nicht existierende Verzeichnisse. Folgender JavaScript-Codeschnipsel kann Abhilfe schaffen:

// Systemsniffer
function mac()
  {
  return(navigator.appVersion.toLowerCase().indexOf("mac") != -1 )
  }
// (c) 2002 by Günther Schleu
if (mac())
  {
  document.write('<base href="'+window.location.href+'">');
  }

Der Power_Mac erzeugt hier jedoch weiterhin diesen Fehler.


JS-Menü-Script in .js-Datei auslagern

Das JavaScript für JS-Menü lässt sich in eine externe .js-Datei auslagern; im folgenden Beispiel »Dateiname.js« genannt.

Position in der html-Datei: head-Bereich.

Vorteil: Viele »kostenlose« Webspace-Anbieter schreiben in die hochgeladenen Dateien »Werbungs-Code« der mitunter das JS-Menü-Script »zerschießt«. Der Grund hierfür liegt vermutlich in der Zeile: m.write("</head>\n<body "+((hgFarbe ..., die fehlerhaft interpretiert wird, da sie als "Ende" des head-Elements erscheint.
Mit einer Auslagerung wird dies verhindert.
Bei dieser Praxis ist aber auch Kritik an die free-webspace-Anbieter angesagt, einfach eigenen Code in die Datei an eine „unbekannte“ Stelle zu schreiben - ein Bereich mit Kommentaren flankiert wäre hier sinnvoll und sicherer.
Nachteil: Netscape 6.x hat Probleme mit der externen .js-Datei. Hier werden die Variablen/Funktionen nicht korrekt in das Frameset (welches nun korrekt im <html>-Modul zwischen </head> und <body> steht) übernommen. Weiter werden in der .js-Datei enthaltene Umlaute dem Netscape-Browser zum Verhängnis - u.U. kommt es zum Programmabsturz. Auch wenn der Marktanteil des Netscape-Browsers gering ist (inzwischen knapp 10 %) und stetig weiter sinkt, kann auf die Besucher bislang schlecht verzichtet werden.
Zu bedenken ist, dass das Auslagern von JavaScript-Code in eine externe Datei dem JavaScript-Standard 1.1 entspricht und der die Seite aufrufende Browser diesen Ausführen können muss. Dies stellt allerdings kein Hinderungsgrund dar, da die neueren Browser mit ausgelagerten Scripts kein Problem mehr haben sollten.


JS-Menü per Link schließen

Ein Framesetwindow kann nur über den »parent« angesprochen werden, das gilt auch für den Schließenbefehl mit JavaScript.

Position innerhalb eines body-Elements - z.B. MenueFrame, KlappFrame aber auch innerhalb einer anderen Seite in einem weiteren Frame des JS-Menü-Framesets. javascript:parent.window.close()


Der Internet-Explorer schließt sich nur nach bestätigter Rückfrage, Netscapes Navigator 4.x ebenso. Netscape Navigator 6.x schließt das Fenster ohne Rückfrage.

Zum Test: close



Start-Dateien - MenueFrame/KlappFrame

In das MenueFrame wird beim Start die in FrameSet A: bestimmte Datei aufgerufen. Diese sollte nicht die nojsmenu.html-Datei - mit dem statischen Menü - sein, sondern z.B. die Datei vorladen.html oder leer_menu.html.


Die ganze Datei anpassen

Passen Sie nicht nur die Menü-Inhalte, sondern auch die <html>-Module an, die außerhalb des <script>-Modules des JS-Menüs stehen und normalerweise nicht zu sehen sind: <noscript>, <title>, <noframes> mit <body>


Counter - Besucherzähler

Wenn Sie Ihren Besuchern unbedingt einen Besucherzähler (Counter) antun wollen, stellen Sie diesen nicht in das JS-Menü-Frame (z.B. suffxHTML, da es sonst bei jeder Ordneraktion aktualisiert wird), sondern in ein eigenes Frame. Der richtige Platz zum Einfügen ist das Frameset A, in dem dann beispielsweise folgende Zeile stehen muss:

Position im JS-Menü-Script: Innerhalb der frameset A-Definition des JS-Menüs.

Das Frameset mit einem Counter zwischen dem MenuFrame und dem KappFrame sieht dann beispielsweise so aus:

if (KlapFrame==1)
  {
  document.writeln('<frameset rows="*,40,85">')
  }
else
  {
  document.writeln('<frameset rows="*,40">')
  }
document.writeln('<frame name="menuFrame" src="vorladen.html" marginwidth="0" marginheight="0" scrolling="Auto" frameborder="0">')
document.writeln('<frame name="counterFrame" src="counter.html" marginwidth="0" marginheight="0" scrolling="no" frameborder="0">')
if(KlapFrame==1)
  {
  document.writeln('<frame name="klappFrame" src="leer.html" marginwidth="0" marginheight="0" scrolling="no" frameborder="0">')
  }
document.writeln('</frameset>')

Anmerkung 1: In der Datei counter.html steht dann der Code für den Counter. Die Höhe des counterFrame beträgt 40.
Anmerkung 2: Im obigen Beispiel ist zur besseren Übersicht der Quellcode mit zusätzlichen Zeilenumbrüchen versehen.

© 2000