Hanz: Globales Menü?

Hallo,

weiß jemand, wie ich bei einer Javascript-Navigation erreichen kann, dass die Position des Menüs (also geöffnete und geschlossene Menübäume) gespeichert und an die nächste Seite weitergegeben wird, damit sich das  Menü nicht jedes Mal in seine Anfangsposition zurück begibt?

MfG und Danke,

Hanz

  1. Hallo Hanz,

    weiß jemand, wie ich bei einer Javascript-Navigation erreichen kann, dass die Position des Menüs (also geöffnete und geschlossene Menübäume) gespeichert und an die nächste Seite weitergegeben wird, damit sich das  Menü nicht jedes Mal in seine Anfangsposition zurück begibt?

    Am einfachsten dürfte dies mit einem http://de.selfhtml.org/javascript/objekte/document.htm#cookie@Cookie zu realisieren sein. Speichere darin die geöffneten Zweige.

    Siehe auch http://www.roast-horse.com/tutorials/_tutorials/css_js_collapse_menu/

    BTW, gibt es eine Alternative (Sitemap), die ohne JavaScript funktioniert?

    Grüße
     Roland

    --
    Drucklayouts mit CSS gestalten
    Benutzerstylesheet für das SELFHTML-Forum
    1. Cookies, hm...

      wollte ich erst nicht machen, weil manche Leute derart Paranoia schieben, dass sie sogar die Cookies deaktivieren, weil sie denken, dass ansonsten ihre Festplatte explodiert.

      Gäbe es denn noch ne andere Möglichkeit?

      1. Und gleich nochmal:

        Hier ist das Menü:
        --------------------------------------------------
          var height = 16; // Hoehe der Menuekoepfe
          var iheight = 16; // Hoehe der Menueelemente
          var bgc = "#CCCCCC" // background color of the item
          var tc = "black" // text color of the item
          var over_bgc = "CCCCCC";
          var over_tc = "#333333";
          var speed = 0;
          var timerID = "";
          var N = (document.all) ? 0 : 1;
          var width = 154;
          var self_menu = new Array();
        function write_menu()
        {
          smc = 0; // count the position of the self_menu
          document.write("<div style='position:absolute'>");
          mn = 0;
          mni = 1;
          start = -1;
          for(i=0;i<Link.length;i++)
          {
           la = Link[i].split("|");
           if (la[0] == "0")
           {
            if(start == 0)
             {
              document.write("</div>");
              h =  csmc * iheight;
              tmn = mn; //-h
              self_menu[smc] = new Array(tmn,h,0,-2);
              smc++;
              mn--;
             }
             csmc = 0;
            document.write("<div class='menu' style='top:"+mn+";height:"+height+"' id='down"+smc+"' onclick='pull_down("+smc+","+mni+")'> "+ la[1] + "</div>");
            self_menu[smc] = new Array(mn,height,0,mni);
            smc++;
            mni++;
            mn+=height;
            start = 1;
           }
           else
           {
            if(start == 1)
             {
              if(N)mn+=2;
               document.write("<div class='item_panel' id='down"+smc+"' style='top:"+mn+"'>");
               start = 0;
             }

        document.write("<a href='"+la[2]+"'");
            if (la[3] != "") document.write(" target='" + la[3] + "' ");
            document.write("><div class='item' id='d"+i+"' style='height:"+iheight);
            if (N) document.write(";width:150");
            document.write("' onmouseover='color(this.id)' onmouseout='uncolor(this.id)'>  "+ la[1] + "</div></a>");
            csmc++;
           }
          }
          if (start == 0)
           {
             document.write("</div>");
             h =  csmc * iheight;
             tmn = mn + 5; //-h
             self_menu[smc] = new Array(tmn,h,0);
             name = "down" + (self_menu.length-1);
             obj = document.getElementById(name);
             obj.style.borderBottomColor = "#CCCCCC";
             obj.style.borderBottomWidth = 1;
             obj.style.borderBottomStyle = "solid";
           }
          document.write("</div>");}
        function color(obj)
        {
         document.getElementById(obj).style.backgroundColor = over_bgc;
         document.getElementById(obj).style.color = over_tc
        }

        function uncolor(obj)
        {
         document.getElementById(obj).style.backgroundColor = bgc;
         document.getElementById(obj).style.color = tc
        }

        function pull_down(nr,c)
        {
         if (timerID == "")
         {
         to = self_menu[nr+1][1]
         begin = nr + 2;
         if (timerID != "") clearTimeout(timerID);
         if (self_menu[nr+1][2] == 0)
         {
          self_menu[nr+1][2] = 1;
          if(nr == self_menu.length-2) {to++;}
          epull_down(begin,to,0);
         }
         else
         {
          to = 0;
          self_menu[nr+1][2] = 0;
          name = "down"+(nr+2);
          open_item = 0;
          for(i=0;i<nr;i++)
          {
           if(self_menu[i][2] == 1)
            {open_item += self_menu[i][1];
            }
          }
          if (N == false) {open_item-= (c*1)};
          if (nr== self_menu.length-2) {val = self_menu[self_menu.length-1][1];to=-1;}
          else  val = parseInt(document.getElementById(name).style.top) -(open_item)-(c*height);
          epull_up(begin,to,val);
         }
         }
        }

        function epull_down(nr,to,nowv)
        {
         name = "down" + (nr-1);
         obj = document.getElementById(name).style.clip = "rect(0,"+width+","+(nowv+1)+",0)";
         for (i=nr;i<self_menu.length;i++)
         {
          name = "down" + i;
          obj = document.getElementById(name);
          obj.style.top = parseInt(obj.style.top)+1;
         }
         nowv++;
         if(nowv < to) timerID = setTimeout("epull_down("+nr+","+to+","+nowv+")",speed);
         else timerID = "";
        }

        function epull_up(nr,to,nowv)
        {
         name = "down" + (nr-1);
         obj = document.getElementById(name).style.clip = "rect(0,"+width+","+nowv+",0)";
         for (i=nr;i<self_menu.length;i++)
         {
          name = "down" + i;
          obj = document.getElementById(name);
          obj.style.top = parseInt(obj.style.top)-1;
         }
         nowv--;
         if(nowv > to) timerID = setTimeout("epull_up("+nr+","+to+","+nowv+")",speed);
         else timerID = "";
        }

        function startup(nr)
        {
         write_menu();
         if (nr != 0)
         {
         for(i=0;i<self_menu.length;i++)
         {
          if(self_menu[i][3] == nr) pull_down(i,nr)
          i==self_menu.length;
         }
         }
        }
        --------------------------------------------------------------
        So, schön lang. Ich hab grad üüberhaupt keine Ahnung, was ich jetzt dem Cookie als Wert zuweisen soll...

        1. Hallo Hanz,

          So, schön lang. Ich hab grad üüberhaupt keine Ahnung, was ich jetzt dem Cookie als Wert zuweisen soll...

          Deshalb würde ich mich ja auch eher Daniel Thomas Baummenü orientieren, da ist das mit dem Aufklappstatus über window.name geregelt:

          http://aktuell.de.selfhtml.org/tippstricks/dhtml/treemenu/index.htm

          Gruß Gernot

      2. Hi,

        Gäbe es denn noch ne andere Möglichkeit?

        zumindest den gerade aktiven Menübaum könntest Du leicht anhand der location ermitteln und öffnen.

        freundliche Grüße
        Ingo

      3. Hallo Hanz.

        Gäbe es denn noch ne andere Möglichkeit?

        Du könntest:
        1. Sobald ein Menü geöffnet wurde, durchläufst du alle Links auf der Seite
           und hänst ein ?offen=... an den Link an, was jedoch
           nach Anzahl der Links zeitlastig ist.
        2. Du hast die Seite in einem Frame und sobald ein Menü geöffnet
           wird speicherst du das einfach in einer Variable in einem anderen Frame
        3. Du benutzt window.name und speicherst so die Daten, selbst wenn der
           User auf eine andere Seite geht und dann auf deine zurück kommt,
           weißt du noch immer welche Menüs aufgeklappt waren.

        Infos zu:
        2. http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe/index.htm
        3. http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe-2/index.htm

        Man liest sich, H2O

        --
        #*~!:     Download Opera
        Selfcode: [ie:% fl:( br:< va:) ls:[ fo:| rl:( n4:( ss:) de:> js:| ch:? sh:( mo:| zu:}](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%25%20fl%3A(%20br%3A%3C%20va%3A)%20ls%3A%5B%20fo%3A%7C%20rl%3A(%20n4%3A(%20ss%3A)%20de%3A%3E%20js%3A%7C%20ch%3A%3F%20sh%3A(%20mo%3A%7C%20zu%3A%7D)
                                  Decoder    -    Infos