Roland: JS on/off erkennen und demnach Menü anpassen

hi!

Ich habe ein Menü, das per klick auf das Überelement aufklappt, doch ohne eingeschaltenes JS funktioniert dies klarerweise nicht, deshalb meine frage: Gibt es eine Möglichkeit für Benutzer, die JS ausgeschalten haben, dieses Menü doch anzuzeigen => z.B. wenn JS abgeschalten ist wird das Menü aus einer anderen Datei geladen, die eben kein JS benötigt?

thx
Roland

PS: hier das Script (mit dem Script werden immer zwei Objekte aufgeklappt, da sich der Hintergrund auch mit dem Menü ändert:

<style type="text/css">
<!--
 .submenu{display: none;}
//-->
</style>

<script type="text/javascript">
<!--
function SwitchMenu(obj1,obj2){
 if(document.getElementById){
 var el1 = document.getElementById(obj1);
 var ar1 = document.getElementById("masterdiv").getElementsByTagName("span");
  if(el1.style.display != "block"){
   for (var i=0; i<ar1.length; i++){
    if (ar1[i].className=="submenu")
    ar1[i].style.display = "none";
   }
   el1.style.display = "block";
  }else{
   el1.style.display = "none";
  }
 }
  if(document.getElementById){
 var el2 = document.getElementById(obj2);
 var ar2 = document.getElementById("masterdiv2").getElementsByTagName("span");
  if(el2.style.display != "block"){
   for (var o=0; o<ar2.length; o++){
    if (ar2[o].className=="submenu")
    ar2[o].style.display = "none";
   }
   el2.style.display = "block";
  }else{
   el2.style.display = "none";
  }
 }
}
//-->
</script>

und per klick auf das Objekt im
<div class="menutitle" onclick="SwitchMenu('sub1','bg1')">
 werden die Objekte im
<span class="submenu" id="sub1">
geöffnet

  1. Hallo Roland,

    Gibt es eine Möglichkeit für Benutzer, die JS ausgeschalten haben, dieses Menü doch anzuzeigen => z.B. wenn JS abgeschalten ist wird das Menü aus einer anderen Datei geladen, die eben kein JS benötigt?

    ohne deinen Quellcode jetzt genau angesehen zu haben:
    Dafür gibt es das noscript-Element. Packe den Ersatzabschnitt für User ohne JS zwischen <noscript></noscript>, und allen ist geholfen.

    Schönes Wochenende noch,

    Martin

    1. hi Martin!

      Aber alles, außer dem JS wird ja trotzdem interpretiert, d.h. bei noscript würde die Seite dann doch doppelt angezeigt werden, oder?
      Außerdem würde ich gerne nicht alles per noscript nochmal reinschreiben, da dann ALLE user deutlich mehr zum laden haben, als wenn ich dies teilen könnte.

      lg
      Roland

  2. Hallo Roland,

    du könntest doch zuerst einmal alles aufgeklappt haben und mit dem Eventhandler onload dann erst zuklappen. Dann bleibe bei den Nutzern ohne JS alles aufgeklappt und diejenigen mit JS hätten als Ausgangslage dann die zugeklappte Version, die sie dann so, wie du das vorhast, auch mit JS auklappen könnten.

    Gruß Gernot

    1. hmmm...Gute Idee!!! Auf einer der Websites kann ich das nutzen, aber das Menü geht sich dann nicht mehr ganz auf einer Seite aus und wenn ich einen Scrollbalken einfüge wäre mein Design vollkommen kaputt. Deshalb würde ich, falls es kein JS gibt, gerne statt Button-Bildern eine Text-Navigation anbieten, denn erstens mögen die meisten User, die ohne JS im web sind auch nicht allzuviele Buttons und Bilder. Deshalb wäre eine Alternative besser :-)

      PS: Ich hatte gerade eine Idee: es müsste doch möglich sein mit JS beim wechsel vom Intro auf die Seite eine var zu übergeben und wenn mein PHP diese var dann nicht finden würde, könnte es einfach den Menü-Link ändern! Was sagt ihr zu dieser Idee?

      thx
      Roland

      1. Hi,

        Deshalb würde ich, falls es kein JS gibt, gerne statt Button-Bildern eine Text-Navigation anbieten

        Dann mach das doch. Das Javascript-Menü über document.write (könnte dann sogar ausgelagert werden) und die Alternative in noscript.

        PS: Ich hatte gerade eine Idee: es müsste doch möglich sein mit JS beim wechsel vom Intro auf die Seite eine var zu übergeben und wenn mein PHP diese var dann nicht finden würde, könnte es einfach den Menü-Link ändern! Was sagt ihr zu dieser Idee?

        Murks. Du vergißt völlig die Quereinsteiger.

        freundliche Grüße
        Ingo