Rudi das Rentier: ajax-navigationsmenü?

Guten Tag,

ich suche ein cross-browser-kompatibles AJAX-Navigationsskript für eine Navigation wie diese:

Menü vor hover:
+-------------+----------+----------+
|   Punkt 1   |  Punkt 2 |  Punkt 3 |
+-------------+----------+----------+

Menü bei hover von punkt1:
+-------------+----------+----------+
|   Punkt 1   |  Punkt 2 |  Punkt 3 |
+-------------+----------+----------+
| Punkt 1.1   |
+-------------|
| Punkt 1.2   |
+-------------|
| Punkt 1.3   |
+-------------+

Beim hovern soll das Untermenü ausklappen (optisch möglichst effektvoll). Ich hab schon gegooglet, aber kein entsprechendes Skript gefunden.
Wie nennt man denn ein derartiges Ausklappmenü, hat das einen speziellen Namen?
Kennt ihr derartige AJAX-Skripts?

Danke für euren Input,
Rudi das Rentier

  1. Warum denn Ajax? Willst du die Menüpunkte dynamisch laden? Suche einfach nach Javascript Menü

  2. Hallo!

    Wie nennt man denn ein derartiges Ausklappmenü, hat das einen speziellen Namen?

    Dropdownmenu?

    Kennt ihr derartige AJAX-Skripts?

    Nein, warum auch? Erstens wäre es eine ganz einfache AJAX-Aufgabe und zweitens macht es überhaupt keinen Sinn das mit AJAX zu realisieren. Warum machst du nicht einfach ein klassisches Dropdownmenu mit CSS und eventuell einem Workaround für <= IE6?

    Die Nachteile wenn man das Dropdownmenü mit Ajax macht:
    *) Das "Ausklappen" dauert länger als non-AJAX Dropdownmenu
    *) Browser ohne / mit deaktiviertem JavaScript können das Untermenü nicht sehen / erreichen.
    *) Man braucht viel mehr Code als die non-AJAX Lösung.

    Warum sind alle so geil auf AJAX?
    Es gibt durchaus sinnvolle Anwendungsgebiete dafür aber die Leute scheinen nur "Warum einfach, wenns auch kompliziert geht?" zu denken.

    --
    Lg,
    Snafu
    1. hi,

      Die Nachteile wenn man das Dropdownmenü mit Ajax macht:
      *) Das "Ausklappen" dauert länger als non-AJAX Dropdownmenu

      Du musst ja nicht bei jedem erneuten Überfahren eines Navigationsbuttons mit der Maus die Unterpunkte _erneut_ per AJAX nachladen ...

      Das macht man einmal initial, und fügt die Elemente ins DOM ein.
      Und auf den Folgeseiten geht auch dieses initiale Einfügen noch schneller, weil der Browser die AJAX-Ressource aus dem Cache fischen kann.

      *) Browser ohne / mit deaktiviertem JavaScript können das Untermenü nicht sehen / erreichen.

      Na und, dann bekommen die halt eine Alternative serviert. Und wenn's nur ein Link zur Sitemap in <noscript> ist.

      *) Man braucht viel mehr Code als die non-AJAX Lösung.

      ... der ebenfalls wunderbar gecached werden kann.

      Warum sind alle so geil auf AJAX?
      Es gibt durchaus sinnvolle Anwendungsgebiete dafür

      Ohne "geil" drauf zu sein, habe ich prinzipiell kein Problem damit, eine Navigation, die in allen Seiten vorhanden sein soll, per AJAX nachzuladen, sofern entsprechende Alternativen bereitgestellt werden.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Moin!

        Die Nachteile wenn man das Dropdownmenü mit Ajax macht:
        *) Das "Ausklappen" dauert länger als non-AJAX Dropdownmenu

        Du musst ja nicht bei jedem erneuten Überfahren eines Navigationsbuttons mit der Maus die Unterpunkte _erneut_ per AJAX nachladen ...

        Das macht man einmal initial, und fügt die Elemente ins DOM ein.
        Und auf den Folgeseiten geht auch dieses initiale Einfügen noch schneller, weil der Browser die AJAX-Ressource aus dem Cache fischen kann.

        Mag sein. Aber wenn man die Navigation schon von Anfang an ins HTML integriert, und nur per CSS ausblendet, haben auch Suchmaschinen und Screenreader was davon.

        Eine AJAX-Lösung für die Navigation ist daher in aller Regel vollkommener Schwachsinn.

        Warum sind alle so geil auf AJAX?
        Es gibt durchaus sinnvolle Anwendungsgebiete dafür

        Ohne "geil" drauf zu sein, habe ich prinzipiell kein Problem damit, eine Navigation, die in allen Seiten vorhanden sein soll, per AJAX nachzuladen, sofern entsprechende Alternativen bereitgestellt werden.

        Damit machst du AJAX zum Next-Generation-Frameset - mit allen tiefgreifenden Nachteilen, die schon bei Frames auftraten.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. hi,

          Damit machst du AJAX zum Next-Generation-Frameset - mit allen tiefgreifenden Nachteilen, die schon bei Frames auftraten.

          Welche Nachteile von Frames siehst du konkret auch hier gegeben? [1]
          Mal unabhängig davon, ob die Navigation jetzt "per AJAX" oder per document.write o.ä. aus einem eingebundenen Script ins Dokument eingefügt würde.

          [1] Abgesehen von dem, dass ohne JS/AJAX ein weiterer Klick notwendig wäre, um dann aus einer Sitemap heraus weiter zu navigieren. Ja, diesen kleineren Nachteil lasse ich als Analogie zum "die Suchmaschine verlinkt nur auf meine einzelnen Seiten, dann fehlt aber mein 'Drumherum'" gelten.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. Moin!

            Damit machst du AJAX zum Next-Generation-Frameset - mit allen tiefgreifenden Nachteilen, die schon bei Frames auftraten.

            Welche Nachteile von Frames siehst du konkret auch hier gegeben? [1]

            Erstmal sehe ich Nachteile gegeben - das reicht ja schon.

            Einfallen tun mir:

            1. Timing! Eine Navigation ist zweifelsohne das meistgenutzte Element einer Webseite. Hierbei kommt es drauf an, dass schnellstmöglich und ohne Verzögerung Unternavigationen aufklappen.

            Wenn man (selbst unter Berücksichtigung von programmiertem Caching) zunächst erst mal einige Sekunden warten muß, bevor das erste Untermenü ausklappt, dann ist das ohne jeden Zweifel viel zu lang.

            Mit AJAX muß man aber mehr oder weniger zwangsläufig so lange warten, bis der Server ein Ergebnis geliefert hat. Steht die Navigation hingegen komplett im Dokument, ist sie auch "instant" sofort verfüg- und anzeigbar.

            2. Eines der Hauptprobleme von AJAX-Anwendungen ist die Verfügbarmachung des dynamisch herbeigeführten Zustands unter einer aufrufbaren URL. Das gleiche Problem haben Framesets. Von daher sehe ich da schon Parallelen. Das mag für eine Navigation vielleicht nicht so relevant sein, insgesamt ist es das aber schon. Von daher der Vergleich.

            [1] Abgesehen von dem, dass ohne JS/AJAX ein weiterer Klick notwendig wäre, um dann aus einer Sitemap heraus weiter zu navigieren.

            Eine Sitemap ist absolut kein adäquater Ersatz für "noscript"-Besucher. Das geht weitaus besser.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."
      2. Hallo!

        Das macht man einmal initial, und fügt die Elemente ins DOM ein.

        Dann kann man es gleich Serverseitig (php, asp, ..) als "statischen Code" ausgeben wenn es sich nicht ändert.

        Na und, dann bekommen die halt eine Alternative serviert. Und wenn's nur ein Link zur Sitemap in <noscript> ist.

        Warum können nicht einfach die JS-Benutzer eine alternative erhalten?
        Man kann ja mit JS ganz einfach ein Element aus dem Baum entfernen. Da benötigt man kein <noscript>-Element. Code sieht dann schöner aus und wer JS-Extrawürste haben will kann das, was er anders haben ganz einfach mit removeChild entfernen.

        --
        Lg,
        Snafu
        1. hi,

          Na und, dann bekommen die halt eine Alternative serviert. Und wenn's nur ein Link zur Sitemap in <noscript> ist.
          Warum können nicht einfach die JS-Benutzer eine alternative erhalten?

          Tun sie doch: Eine per AJAX nachgeladene Navigation, die sich dann ins Dokument integriert.

          Man kann ja mit JS ganz einfach ein Element aus dem Baum entfernen. Da benötigt man kein <noscript>-Element.

          Wozu sollte ich etwas entfernen, von dem ich ganz genau weiss, dass es der Nutzer mit JS sowieso nicht zu sehen bekommen wird?

          Code sieht dann schöner aus

          Nach wessen Maßstab - deinem, dem von Karl Lagerfeld, ...?

          und wer JS-Extrawürste haben will kann das, was er anders haben ganz einfach mit removeChild entfernen.

          Siehe oben, sehe ich keinerlei Vorteil drin.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }