hannes: dyn. Navigation und dyn. Ebenen aus SELHTML und IE6

Hallo,

ich hatte kürzlich eine Frage gepostet. Als "Wochenend-Webseitenentwickler" musste ich dann die Arbeit unterbrechen. Nun möchte ich sie wieder aufnehmen und habe Anschlussfragen.

Die alten threads sind inzwischen im Archiv zu finden:
http://forum.de.selfhtml.org/archiv/2007/2/t147255/#m955279

Hier meine Fragen/Bemerkungen:

  1. an wucher wichtel: ich habe den Code wie angegeben eingebunden (inkl. <ul id="submenu"> im body-Teil).
function hoverIE() {  
    var LI = document.getElementById("Navigation").firstChild;  
    do {  
      if (sucheUL(LI.firstChild)) {  
        LI.onmouseover=einblenden; LI.onmouseout=ausblenden;  
      }  
      LI = LI.nextSibling;  
    }  
    while(LI);  
  document.getElementById("submenu").style.display = "none";  
 }

Jetzt sind beim Öffnen der Seite die Untermenüs wie gewünscht zugeklappt. Bei mouseover auf das Hauptmenü klappen sie wunschgemäss auf, jedoch beim Verschieben der Maus auf ein Untermenü (d. h. wenn die Maus das Hauptmenü verlässt, um einem Untermenü-Link zu folgen) klappt das Untermenü wieder zu, so dass sie nicht angewählt werden können.

  1. Wieso funktioniert es auf der Seite http://de.selfhtml.org/css/layouts/anzeige/nav_javascript.htm, obwohl ich den gleichen javascript-code in meine Seite eingefügt habe?

  2. an wahsaga:

Spielereien wie "dynamische" Menüs auch für den IE per Javascript "funktionsfähig" zu bekommen, ist eine Aufgabe, die du auch später noch angehen kannst.

ich möchte ja gerade CSS verwenden (s. mein erstes posting). Da es aber mit CSS alleine unter IE6 nicht funktioniert, muss ich ja wohl, der Empfehlung von SELFHTML folgend, zwangsläufig dieses javascript einbinden.

Gruss

  1. Hallo,

    kann mir da wirklich niemand weiter helfen? Oder ist meine Fragestellung zu unklar?

    Gruss

    1. Hallo!

      kann mir da wirklich niemand weiter helfen? Oder ist meine Fragestellung zu unklar?

      Ich habe das Problem, dass ich dein Problem nicht nachvollziehen kann. Bei mir macht der IE alles richtig. Hast du Service Pack 2 installiert? Kannst du eventuell den ganzen Code posten oder einen Link geben. Es kann sein, dass du in deinem ursprünglichen Code einen Fehler gemacht hast. Oder aber es liegt an deinem Computer.

      ciao, ww

      --
      sh:(  fo:|  ch:~  rl:(  br:>  n4:~  ie:%  mo:)  va:)  de:]  zu:)  fl:(  ss:|  ls:~  js:)
      1. Hallo wucher wichtel

        ...Hast du Service Pack 2 installiert?

        Ja. WinXP Home SP2. IE6.

        Mit FF2 und Opera(auch V8) funktioniert alles fehlerfrei.

        Das Kuriose ist ja, dass
        http://de.selfhtml.org/css/layouts/anzeige/nav_javascript.htm
        in der gleichen Entwicklungsumgebung mit IE6 funktioniert, und dort ist ja das identische javascript (natürlich ohne deine vorgeschlagene Erweiterung).

        Die unter IE6 nicht richtig funktionierende (s. Fehlerbeschrieb im Eingangsposting) Seite ist jetzt unter
        http://www.tonform.ch/test/kopfundfuss_erweitert.htm
        zu sehen.

        Gruss

        1. Hallo!

          Jetzt kann ich es nachvollziehen. Habe aber leider jetzt keine Zeit mehr. Wenn es sich bis heute Abend nicht geklärt, werd ich mein Glück versuchen :-)

          ciao, ww

          --
          sh:(  fo:|  ch:~  rl:(  br:>  n4:~  ie:%  mo:)  va:)  de:]  zu:)  fl:(  ss:|  ls:~  js:)
          1. Vielen Dank - und bis später.

            Es sei denn, jemand anders möchte sich dieses Problems annehmen.

            Gruss

        2. Hallo,

          Die unter IE6 nicht richtig funktionierende (s. Fehlerbeschrieb im Eingangsposting) Seite ist jetzt unter
          http://www.tonform.ch/test/kopfundfuss_erweitert.htm
          zu sehen.

          Der IE<7 betrachtet besonders spezielle Block-Format-Kontexte nur dann standardkonform (oder jedenfalls so ähnlich wie standardkonform ;-)), wenn das betroffene Element ein hasLayout-Element ist. Bei Dir befindet sich die UL#submenu zwar innerhalb der UL#navigation LI und sollten dieses Element entsprechend ausdehnen, wenn sie erscheinen und damit natürlich auch UL#navigation LI.onmouseover weiter triggern, solange der Mauszeiger über diesem ausgedehnetn Element ist. Das passiert aber im IE<7 eben nur, wenn UL#navigation LI ein hasLayout-Element ist. Das kannst Du z.B. erreichen, indem Du diesem Element nur für den IE eine Höhe von 1px gibst. Die CSS height-Angaben werden vom IE<7 wie min-height behandelt, so dass diese Angabe hier nicht stört. Da Du ohnehin schon * html benutzt, würde sich also:

          * html ul#Navigation li {  /* Korrektur fuer IE kleiner 7 */
              height: 1px;
            }

          anbieten.

          PS.: Übrigens kannst Du Dir damit auch die besonderen Breitenangaben wie

          w\idth: 8.8em;  /* Breitenangabe fuer IE 6 */

          für die A-Elemente auch sparen.

          viele Grüße

          Axel

          1. Hallo Axel,

            jetzt funktioniert es einwandfrei. Vielen Dank.

            Gruss