fjh: Netscape und Dropdown-Menüs bei Reload

Hallo ForumlerInnen,

ich versuche gerade per DHTML Dropdown-Menüs zu basteln.
Klappt auch alles ganz gut. Allerdings hat mein Code im Netscape eigenartige Folgen.
Bei Reload bzw. mehrfachem Reload der Seite hintereinander stürzt Netscape ab (4.5, 4.7 egal welcher).

Der folgende Code enthält nur ein Menü und der Netsi sollte ihn zumindest laden. Füge ich darunter weitere Menüs nach demselben Schema hinzu, dann stürzt er teilweise sofort ab. Habe bereits vieles versucht. Vielleicht fällt ja jemandem was auf.

<HTML>
<HEAD>
<TITLE>Menuetest</TITLE>

<SCRIPT LANGUAGE="JavaScript">
<!--
   if (navigator.userAgent.indexOf("Mac") != -1){
    document.write('<LINK REL=STYLESHEET TYPE="text/css" HREF="style.css" TITLE="FORUM STYLE">');}
else{
document.write('<LINK REL=STYLESHEET TYPE="text/css" HREF="style_win.css" TITLE="FORUM STYLE">');}

//-->
</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
<!--

ns = (document.layers)? true:false
ie = (document.all)? true:false

function showObject(id) {
if (ns) document.layers[id].visibility = "show";
else if (ie) document.all[id].style.visibility = "visible";
}

function hideObject(id) {
if (ns) document.layers[id].visibility = "hide"
else if (ie) document.all[id].style.visibility = "hidden"
}
//-->
</SCRIPT>

</HEAD>
<BODY LINK="#000000" background="ffffff" VLINK=black alink="#660000">

<!-- erster Menütitel: Branchen -->
<div style="border:none; padding:2mm; background-color:#cccccc; position:absolute; top:80; left:5; width:150; z-index: 1" id="branche">
  <b><a class="nav" href=# onMouseOver="showObject('menueeintraegebranchen')">Brancheneinstieg</a></b>
</div>

<!-- Menüeinträge1: Branchen -->
<div id="menueeintraegebranchen" style="border:none; padding:2mm; background-color:#eeeeff; position:absolute; top:102; left:5; width:150; visibility:hidden;; z-index: 8">
  <a class="nav" href="brancheneinstieg/banking/index.html" target="Main" onClick="hideObject()">Banking</a><br>
  <a class="nav" href="brancheneinstieg/consulting/index.html" target="Main" onClick="hideObject()">Consulting</a><br>
  <a class="nav" href="brancheneinstieg/wp_steuern/index.html" target="Main" onClick="hideObject()">WP
  und Steuern</a><br>
</div>

</body></html>

Vielen Dank
Franz

  1. Hallo Franz

    ich kann den Fehler zwar nicht nachvollziehen, aber allein das

    visibility:hidden;;

    doppelte ; könnte schon für Probleme sorgen. Könnte es auch sein, daß deine Divs innerhalb einer Tabelle stehen?

    Viele Grüße

    Antje

    1. Hallo Antje,

      zunächst mal vielen Dank.

      ich kann den Fehler zwar nicht nachvollziehen, aber allein das

      habe mal eine Version hochgespielt mit mehreren solcher Menüs untereinander. damit müßte es zumindest nach einigen reloads hintereinander zum Absturz kommen (nur mit Nsc)

      < http://www.fmi.uni-konstanz.de/~herpersf/test.html>

      visibility:hidden;;

      doppelte ; könnte schon für Probleme sorgen. Könnte es auch sein, daß deine Divs innerhalb einer Tabelle stehen?

      das wars leider nicht, und die Divs stehen so da wie sie sind ohne tabelle, das ganze soll dann mal in einen navigationsframe.

      Gruss
      Franz

      1. hi,

        bei mir stuerzt nix ab: NC 4.5 / Mac. Allerdings klappen die Menues nicht mehr zu, war das so gewollt?

        Gruss  Joachim

        1. Hi Joachim,

          bei mir stuerzt nix ab: NC 4.5 / Mac.

          sorry, vergaß zu sagen: Abstürze nur auf PC. Auf dem Mac hab ichs geschrieben, da liefs. Als ichs dann zuhause auf Pc ausprobiere, eben dauernd Abstürze:

          Allerdings klappen die Menues nicht mehr zu, war das so gewollt?

          Ne, is noch nicht fertig, mit reload klappen sie wieder zu. So bin ich ja auf das Phänomen "Absturz nach Reload" gestoßen.

          Viele Grüße
          Franz

          1. hi,

            Als ichs dann zuhause auf Pc ausprobiere, eben dauernd Abstürze:

            jaja, Mac ist halt doch der schoenere Rechner;-)

            Ne, is noch nicht fertig, mit reload klappen sie wieder zu. So bin ich ja auf das Phänomen "Absturz nach Reload" gestoßen.

            Also ich habe was aehnliches gebastelt, aber etwas anders angesetzt: Layer und 'captureEvents(Event.ONMOUSEOVER Event.ONMOUSEOUT);' fur NC, bei IE reicht ja onmouseover/out im Div-tag.
            Einzige Schwierigkeit: beim IE feuert onmouseout auch ueber den Links_im_Layer. Man muss fuer IE also abfragen, ob das Ziel von onmouseout Link oder Body ist.

            Gruesse und viel Erfolg

            Joachim

            1. hallo,

              jaja, Mac ist halt doch der schoenere Rechner;-)

              ja schoener schon, aber wer mit PC aufgewachsen ist, weiß die eckigen Kisten zu schätzen...
              aber an die runde Tupperwaren-Maus vom G3 kann ich mich gewöhnen :-)

              Einzige Schwierigkeit: beim IE feuert onmouseout auch ueber den Links_im_Layer. Man muss fuer IE also abfragen, ob das Ziel von onmouseout Link oder Body ist.

              Ja vielen Dank für den Tip, daß mit den Links wußte ich noch nicht.
              Aber ich überlege nun, wie frage ich denn das Ziel eines mouseout ab?

              Gruesse, heute wieder vom Mac
              Franz

              1. hi,

                Aber ich überlege nun, wie frage ich denn das Ziel eines mouseout ab?

                da habe ich auch nicht durchgeblickt, denn weil es reine IE Syntax ist, findet man es nicht in allen Dokus. Aber dank eines netten Menschen namens Tjomas Fischer bin ich nun schlauer ...;-)

                function hide(layerID)
                {
                if(window.event.toElement.tagName!='A' && window.event.toElement.tagName!='DIV') document.all[layerID].style.visibility="hidden";
                }

                so geht es ueber die Tags, sprich, verstecken nur, wenn Ziel nicht A oder Div.

                Komplizierter aber eleganter geht es so. Dabei wird die Verstecken-Funktion eine Methode des Div Layers:

                function hide(layerID)
                {
                document.all[layerID].onmouseout=function()
                {
                var tmpEl =event.toElement;
                var pEl=tmpEl.parentElement;
                if(pEl!=this && tmpEl!=this) document.all[layerID].style.visibility="hidden";
                }
                }

                Am besten Du experimentierst mal mit alert(...), dann merkst Du, was da referenziert wird. Viel Erfolg

                Gruesse, Gruesse  Joachim

                1. Hi,

                  Na super, danke Joachim bzw."Tjomas Fischer" ;-)

                  Werde ich gut gebrauchen können, dennmein NS stürzt fröhlich ab (selbstverständlich nur unter Win :), sodaß ich mir wohl ein anderes Prinzip ausdenken muß.

                  Ciao
                  Franz

                  1. hi,

                    so daß ich mir wohl ein anderes Prinzip ausdenken muß.

                    Dann schau doch mal unter http://www.wendenburg.de/menue.htm, vielleicht interessiert es Dich.

                    Gruesse  Joachim

                    1. Dann schau doch mal unter http://www.wendenburg.de/menue.htm, vielleicht interessiert es Dich.

                      jau, höchst interessant. Zumindest was das Zuklappen der Menüs aufgeht. Da hatte ich mir was viel komplizierteres zurecht gelegt.

                      Bei mir ist allerdings Vorgabe, daß die Menüs untereinander stehen. An sich kein Problem, aber ich befürchte bei den sich überlagernden Layern wirds noch Probleme geben.

                      Na, aber jetzt gehts erst mal ins verlängerte Wochenende ohne JS etc.

                      vielen Dank nochmal für Dein Engagement

                      Gruss
                      Franz