Avatar billede kuglepen Nybegynder
21. februar 2007 - 22:18 Der er 2 kommentarer

switchmen problem (javascript og cookies)

Jeg har implementeret et script kaldet switchmenu på dette site www.itko.dk. Scriptet fungerer som en drøm i FF, men ikke i IE.

Scriptet skal gemme menustadie sitewide (Se evt. hvordan det skal fungere, ved at se det i FF).

Scriptet fungerer sådan, at et menu ID gemmes i en cookie og derefter indlæses på siden, og folder den respektive undermenu ud.

Jeg har virkelig brug for hjælp.
Avatar billede kuglepen Nybegynder
21. februar 2007 - 22:31 #1
Jeg skal lige knytte en kommentar: IE husker det første link, man klikker på, og kun den... Jeg smider lige koden her, men den kan ses på sidens kildekode også...

<script type="text/javascript">
            <!--
                /***********************************************
                * Switch Menu script- by Martial B of http://getElementById.com/
                * Modified by Dynamic Drive for format & NS4/IE4 compatibility
                * Visit http://www.dynamicdrive.com/ for full source code
                ***********************************************/
                var persistmenu="yes" //"yes" or "no". Make sure each SPAN content contains an incrementing ID starting at 1 (id="sub1", id="sub2", etc)
                var persisttype="sitewide" //enter "sitewide" for menu to persist across site, "local" for this page only
               
                if (document.getElementById) {
                    document.write('<style type="text/css">\n')
                    document.write('.submenu{display: none;}\n')
                    document.write('</style>\n')
                }
               
                function SwitchMenu(obj){
                    if(document.getElementById){
                        var el = document.getElementById(obj);
                        var ar = document.getElementById("masterdiv").getElementsByTagName("span");
                        if(el.style.display != "block") {
                            for (var i=0; i<ar.length; i++){
                                if (ar[i].className=="submenu") {
                                    ar[i].style.display = "none";
                                }
                            }
                            el.style.display = "block";
                        }else {
                            el.style.display = "none";
                        }
                    }
                    if (persistmenu=="yes") savemenustate();
                }
               
                function get_cookie(Name) {
                    var search = Name + "="
                    var returnvalue = "";
                    if (document.cookie.length > 0) {
                        var offset = document.cookie.indexOf(search)
                        if (offset != -1) {
                            offset += search.length;
                            var end = document.cookie.indexOf(";", offset);
                            if (end == -1) { end = document.cookie.length; }
                            returnvalue=unescape(document.cookie.substring(offset, end))
                        }
                    }
                    //alert("returnvalue: " + returnvalue);
                    return returnvalue;
                }
               
                function onloadfunction(){
                    if (persistmenu == "yes") {
                        var cookiename=(persisttype=="sitewide")? "switchmenu" : window.location.pathname
                        var cookievalue=get_cookie(cookiename);
                        if (cookievalue!="") {
                            document.getElementById(cookievalue).style.display="block";
                        }
                    }
                    //alert("cookievalue: " + cookievalue);
                }
               
               
               
                function savemenustate(){
                    var inc=1, blockid="";
                    while (document.getElementById("sub"+inc)){
                        if (document.getElementById("sub"+inc).style.display=="block"){
                            blockid="sub"+inc;
                            break;
                        }
                        inc++;
                    }
                    var cookiename=(persisttype=="sitewide")? "switchmenu" : window.location.pathname;
                    var cookievalue=(persisttype=="sitewide")? blockid+";path=/" : blockid;
                    document.cookie=cookiename+"="+cookievalue;
                }
               
                if (window.addEventListener) {
                    window.addEventListener("load", onloadfunction, false)
                }
                else if (window.attachEvent) {
                    window.attachEvent("onload", onloadfunction);
                }
                else if (document.getElementById) {
                    window.onload=onloadfunction;
                }
                if (persistmenu=="yes" && document.getElementById) {
                    window.onunload=savemenustate;
                }
                   
            //-->
            </script>
Avatar billede kuglepen Nybegynder
21. februar 2007 - 23:04 #2
jeg tror problemet ligger i at IE ikke vil gemme den nye cookieværdi. Den får fint fat i alle værdier men vil kun gemme værdien i cookie den første gang... underligt. Cookieeksperter ønskes!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester