Rene Grassegger: Frage zu Fallback bei einer JS/CSS Navigation

Hallo Leute,

ich habe heute unter (http://grassegger.at/neu/xperimente/xp4/index.htm)

eine Javascript Navigation entwickelt und bräuchte bitte eure Hilfe.

Die Navigation öffnet/schließt sich auf IE, Mozilla und Opera 7 einwandfrei.

Sollte der User kein JS aktiviert haben wird im die Navigation "geöffnet" präsentiert. (da das Standard-css nicht von JS überschrieben wird.)

Funktioniert auf allen Browsern einwandfrei.

Sollte der User sein JS nicht deaktiviert haben und die Navigation funktioniert nicht, wird ihm ein Link angezeigt, mit dem der User die
Navigation im geöffneten Zustand angezeigt bekommt (http://grassegger.at/neu/xperimente/xp4/index.htm?nonjs)

Es wird eine einfache Funktion aufgerufen, die das ursprüngliche Standard-CSS wieder aufruft und das Script für das Auf- und Zuklappen wird nicht geliefert.

Auf Mozilla funktioniert es wie gewünscht, ABER:

1. unter IE 5.5 und Opera 7 wird nach dem Klick auf http://grassegger.at/neu/xperimente/xp4/index.htm?nonjs die Navigation wie gewünscht geöffnet, aber Sie lässt sich noch auf- und zuklappen. Eigentlich sollte das durch das Script unterbunden werden.

2. Unter Opera 6.05 wird der Link gar nicht angezeigt, mit dem man die Navigation bei aktiviertem JS vollständig aufklappen möchte.

Kann mir bitte vielleicht jemand einen Tipp oder den konkreten Fehler im Script zeigen?

Ich wäre euch echt dankbar.

Anbei der SourceCode der Seite:

<html>
<head>
<title>JS-Navi</title>
<link rel="stylesheet" type="text/css" href="non_js.css" />
<!--
1. Schritt:
Ist JS aktiviert wird das Standard-CSS durch ein neues ersetzt.
Funtioniert in: IE 5, Moz. 1.2.1, Opera 6 und 7, NN 4.76

Ist JS deaktiviert wird das ursprüngliche CSS verwendet, das eine andere Formatierung
für die Navi hat.
-->
<script type="text/javascript">
<!--
//Überschreibt das CSS, wenn der Client JS aktiviert hat
document.write("<link rel="stylesheet" type="text/css" href="js.css" />");

//Sollte der UA JS aktiviert haben, aber das Skript zum Aufklappen funktioniert nicht
 //wird durch einen Klick des Users das non_js.css ausgegeben.
 if (window.location.search == "?nonjs")
 {
  document.write("<link rel="stylesheet" type="text/css" href="non_js.css" />");

} else

function changeStyleById(el,ds)
  {
   if (document.getElementById)
      {
      var nodeObj = document.getElementById(el)
      nodeObj.style.display = ds;
   }
  }

//-->
</script>
</head>
<body>
<div id="text">Text</div>

<div id="nav">

<div class="klick" onMouseover="changeStyleById('e1','block')" onMouseOut="changeStyleById('e1','none')">HTML
<div id="e1">
<p><a href="#">HTML 4.01</a></p>
<p><a href="#">XHTML 1.0</a></p>
<p><a href="#">XHTML 1.1</a></p></div>
</div>

<div class="klick" onMouseover="changeStyleById('e2','block')" onMouseOut="changeStyleById('e2','none')">CSS
<div id="e2">
<p><a href="#">CSS</a></p>
<p><a href="#">CSS 2</a></p>
<p><a href="#">CSS 3</a></p></div>
</div>
</div>

<script type="text/javascript">
<!--
document.write("<p align="right"><a href="" + window.location.pathname + "?nonjs" + "">Navigation funktioniert nicht?</a></p>");
-->
</script>
</body>
</html>

Startseite: http://grassegger.at/neu/xperimente/xp4/index.htm
Standard-CSS: http://grassegger.at/neu/xperimente/xp4/non_js.css
JS-CSS: http://grassegger.at/neu/xperimente/xp4/js.css

Ich danke euch für eure Mühe.

Gruß

Rene

  1. Hi,

    } else
      function changeStyleById(el,ds)
      {

    Das funktioniert?

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    1. Hi Andreas,

      wie würdest du den die if - else Sache lösen?
      Habe ich die falschen Klammern gesetzt?
      Hast du vielleicht nen Tip für mich?

      Danke Rene

      1. Hi,

        wie würdest du den die if - else Sache lösen?

        Ich würde die Funktion nicht im else-Zweig, sondern global definieren.

        cu,
        Andreas

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.