Avatar billede lademan Novice
11. juni 2003 - 19:58 Der er 110 kommentarer og
1 løsning

Udvidelse af javascript

Hej.

Dette er en udfordring til den, der kan og vil. Folk, der fnyser, finder bare et andet spørgsmål :-)

Nedenstående script aktiverer/ deaktiverer et layer og virker i øvrigt fint.

Imidlertid kunne jeg godt tænke mig at gemme instillingerne i en cookie, således at de aktiverede/ deaktiverede layers gemmes til næste besøg en anden dag.

Det kunne være fedt, hvis oplysningerne kunne gemmes i 1 variabel i cookien.

Derudover skal scriptet naturligvis virke i flest browsere som muligt.

Mange tak for svar!

------------------------------

<SCRIPT LANGUAGE="javascript">   
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function ShowHide(id){
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
if(styleObj.display == "none"){
styleObj.display = ""
}else{
styleObj.display = "none"
    }
   
}
</SCRIPT>
Avatar billede lademan Novice
11. juni 2003 - 19:59 #1
Slår lige email-reminderen fra :-)
Avatar billede roenving Novice
11. juni 2003 - 20:01 #2
;O)
Avatar billede roenving Novice
11. juni 2003 - 20:50 #3
Ku' ik' li'e finde på en måde at teste på uden at opbygge et kompliceret dokument, men princippet, burde der ikke være noget galt med:

function ShowHide(id){
var act = "0";
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
if(styleObj.display == "none"){
styleObj.display = "";
act = "1";
}else{
styleObj.display = "none"
}
updateCookie(id,act);
}

function updateCookie(id,act){
    var oldCook = document.cookie;
    var tmp = oldCook.split(";");
    for (i=0;tmp.length>i;i++){
        if (tmp[i].indexOf("ShowHide=")!=-1){
            newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
            break;
        }
    }
    var updated = false;
    for (i=0;newCook.length>i;i++){
        if (newCook[i].indexOf(id+"-")==0){
            newCook[i] = id+"-"+act;
            updated = true;
            break;
        }
    }
    if(!updated){
        newCook[newCook.length] = id+"-"+act;
    }
    var exp = new Date();
    exp.setYear(exp.getFullYear()+1);//cookien gælder et år
    document.cookie = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString();
}

function updateShowHide(){
    var tmp = document.cookie.split(";");
    var cook = false;
    for (i=0;tmp.length>i;i++){
        if (tmp[i].indexOf("ShowHide=")!=-1){
            newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
            cook = true;
            break;
        }
    }
    if(cook){
        for (i=0;newCook.length>i;i++){
            id = newCook[i].substring(0,newCook[i].indexOf("-"));
            act = newCook[i].charAt(newCook[i].length-1);
            var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
            if(act=="0")styleObj.display == "none";
            else styleObj.display = "";
        }
    }

}

-- og så skal der selvfølgelig en onload="updateShowHide();" på body-taggen

-- jeg kom i tvivl om det er nødvendigt at checke if(document.cookie) ?o)

-returnerer den, at browseren understøtter cookies, eller at der er en cookie ?-)

Nå men prøv det, så må vi lige ... ,-)
Avatar billede lademan Novice
11. juni 2003 - 22:02 #4
Jeg prøver det lige... :-)
Avatar billede roenving Novice
11. juni 2003 - 22:04 #5
Jeps *-)
Avatar billede lademan Novice
11. juni 2003 - 22:42 #6
Umiddelbart kan jeg ikke få det til at virke?
Avatar billede lademan Novice
11. juni 2003 - 22:43 #7
Du har ikke testet det?
Avatar billede roenving Novice
11. juni 2003 - 22:45 #8
Jeg kunne ikke finde på noget, som ikke var noget i nærheden af en kopi af hvad du skal bruge det på -- du kunne måske hive noget ud af din kode, så vil jeg gerne efterprøve og eftergå !o)
Avatar billede lademan Novice
11. juni 2003 - 22:51 #9
Here goes:
Avatar billede lademan Novice
11. juni 2003 - 22:52 #10
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<SCRIPT LANGUAGE="javascript">   
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function ShowHide(id){
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
if(styleObj.display == "none"){
styleObj.display = ""
}else{
styleObj.display = "none"
}
}
</SCRIPT>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td onClick="java script:ShowHide('menu_box_1')" class=menu_box_0 title="vis / gem" bgcolor="#999999">klik
      her </td>
  </tr>
</table>
<div name="menu_box_1" id="menu_box_1" style="display:none">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td bgcolor="#FF6600">OLAV</td>
    </tr>
  </table>
</div>
</body>
</html>
Avatar billede lademan Novice
11. juni 2003 - 23:00 #11
man kunne så forestille sig en masse layers, der blev vist, hvis man ellers har dem aktiveret i sin cookie...
Avatar billede roenving Novice
11. juni 2003 - 23:27 #12
Ja, det burde også virke -- jeg havde lavet en tavetosse -- en af dem, som er svære at se, når man ikke på et kvalificeret grundlag kan dissekere koden ;-(

-- der var to == i en tildeling ;o| -- nu kører den op mod to forskellige divs -- stresstesten kommer du til at stå for ,o)

<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function ShowHide(id){
var act = "0";
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
alert(styleObj.id);
if(styleObj.display == "none"){
styleObj.display = "";
act = "1";
}else{
styleObj.display = "none"
}
updateCookie(id,act);
}

function updateCookie(id,act){
    if(document.cookie){
        var oldCook = document.cookie;
        var tmp = oldCook.split(";");
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                break;
            }
        }
        var updated = false;
        for (i=0;newCook.length>i;i++){
            if (newCook[i].indexOf(id+"-")==0){
                newCook[i] = id+"-"+act;
                updated = true;
                break;
            }
        }
        if(!updated){
            newCook[newCook.length] = id+"-"+act;
        }
    }else{
        newCook = new Array();
        newCook[0] = id+"-"+act;
    }
    var exp = new Date();
    exp.setYear(exp.getFullYear()+1);//cookien gælder et år
    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString();
    document.cookie = txt;
}

function updateShowHide(){
    if (document.cookie){
        var tmp = document.cookie.split(";");
        var cook = false;
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                cook = true;
                break;
            }
        }
        if(cook){
            for (i=0;newCook.length>i;i++){
                id = newCook[i].substring(0,newCook[i].indexOf("-"));
                act = newCook[i].charAt(newCook[i].length-1);
                var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
                if(act==0)styleObj.display = "none";
                else styleObj.display = "";
            }
        }
    }
}
</SCRIPT>
Avatar billede lademan Novice
11. juni 2003 - 23:28 #13
Hvad er stresstesten?
Virker det i de fleste browsere?
Avatar billede lademan Novice
11. juni 2003 - 23:33 #14
hehe, jeg er en spade til til javascripts, du kunne ikke fortælle mig, hvad mine layers må hedde (og hvor ændrer jeg det)?
Avatar billede lademan Novice
11. juni 2003 - 23:37 #15
Den her burde jo virke, men det gør den ikke umiddelbart (får pop-up):


<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function ShowHide(id){
var act = "0";
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
alert(styleObj.id);
if(styleObj.display == "none"){
styleObj.display = "";
act = "1";
}else{
styleObj.display = "none"
}
updateCookie(id,act);
}

function updateCookie(id,act){
    if(document.cookie){
        var oldCook = document.cookie;
        var tmp = oldCook.split(";");
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                break;
            }
        }
        var updated = false;
        for (i=0;newCook.length>i;i++){
            if (newCook[i].indexOf(id+"-")==0){
                newCook[i] = id+"-"+act;
                updated = true;
                break;
            }
        }
        if(!updated){
            newCook[newCook.length] = id+"-"+act;
        }
    }else{
        newCook = new Array();
        newCook[0] = id+"-"+act;
    }
    var exp = new Date();
    exp.setYear(exp.getFullYear()+1);//cookien gælder et år
    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString();
    document.cookie = txt;
}

function updateShowHide(){
    if (document.cookie){
        var tmp = document.cookie.split(";");
        var cook = false;
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                cook = true;
                break;
            }
        }
        if(cook){
            for (i=0;newCook.length>i;i++){
                id = newCook[i].substring(0,newCook[i].indexOf("-"));
                act = newCook[i].charAt(newCook[i].length-1);
                var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
                if(act==0)styleObj.display = "none";
                else styleObj.display = "";
            }
        }
    }
}
</SCRIPT>
</head>

<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td onClick="java script:ShowHide('menu_box_1')" class=menu_box_0 title="vis / gem" bgcolor="#999999">klik
      her </td>
  </tr>
</table>
<div name="menu_box_1" id="menu_box_1" style="display:none">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td bgcolor="#FF6600">OLAV</td>
    </tr>
  </table>
</div>
</body>
</html>
Avatar billede lademan Novice
11. juni 2003 - 23:37 #16
:-)
Avatar billede roenving Novice
11. juni 2003 - 23:39 #17
Glemt at fjerne en alert -- debug !-)
Avatar billede lademan Novice
11. juni 2003 - 23:40 #18
Ahhh - kanon!!
Avatar billede roenving Novice
11. juni 2003 - 23:40 #19
Der er bare de normale navngivningskonventioner for javascript-variable: A-Z, a-z, 0-9 og _ -- og de må ikke starte med et tal -- ellers er der frit slag ...

Det nærmeste vi kommer problemer med browsere er parallelt til det, som dit oprindelige script har taget højde for ...

Som jeg umiddelbart kan se, er de metoder osv., som bruges gyldige fra NN3 og IE4 -- bortset fra style, som først kan bruges fra NN4, så den burde glide rent ned for 99.998 % af dagens browsere ...
Avatar billede lademan Novice
11. juni 2003 - 23:41 #20
Dvs, jeg kan roligt fjerne den alert?

Prøver lige igen:
Hvad er stresstesten?
Virker det i de fleste browsere?

Det ser ud til at virke!! :-))
Avatar billede roenving Novice
11. juni 2003 - 23:42 #21
4. linje i function ShowHide !-)

Det kan bruges '-)
Avatar billede lademan Novice
11. juni 2003 - 23:43 #22
Hvad betyder stresstesten? :-)
Avatar billede roenving Novice
11. juni 2003 - 23:44 #23
Ja, fjern alerten ...

Stress-testen er 77 divs/layers, som du fjerner i forskellige kombinationer, lukker browseren en gang imellem osv.

Det der med at lukke browseren er en nødvendighed, for at vi kan teste, at småkagerne slipper ordentlig fra en tur på disk, for de rammer ikke harddisken før browseren lukkes !O)
Avatar billede roenving Novice
11. juni 2003 - 23:46 #24
-- og finder en, med en NN4 til Mac, en konqueror på freebsd og den slags underligheder ...
Avatar billede lademan Novice
11. juni 2003 - 23:46 #25
ok... du har godt styr på det, cool :-))

hvad mht browserkompatibilitet?
Avatar billede roenving Novice
11. juni 2003 - 23:48 #26
Se sidste kommentar 23:40:49 og også 23:46:25
Avatar billede lademan Novice
11. juni 2003 - 23:50 #27
Kanon... :-)
Avatar billede lademan Novice
11. juni 2003 - 23:52 #28
Du fortjener i hvertfald et par point...
Avatar billede lademan Novice
11. juni 2003 - 23:55 #29
Avatar billede roenving Novice
11. juni 2003 - 23:55 #30
Jamen jeg takker da for points ;~}
Avatar billede lademan Novice
11. juni 2003 - 23:56 #31
højremenuen kører efter det script... kan der være for mange layers i spil?
Avatar billede lademan Novice
12. juni 2003 - 00:09 #32
Scriptet virker ikke helt efter hensigten, når man putter det på nettet:
www.surfersinfo.dk/Cool/cookie_menu.php
Jeg ved ikke om det er fordi den konflikter med en anden cookie?
Avatar billede roenving Novice
12. juni 2003 - 00:18 #33
Jeg kan zq ik' følge med -- 1 ud af de sidste 100 gange jeg har bedt om at få vist kilde har jeg fået den vist ... ret håbløst at forfølge fejl på den måde -- hvis jeg forsøger med at downloade siden mangler der jo li'som noget ...
Avatar billede lademan Novice
12. juni 2003 - 00:20 #34
Denne side: www.surfersinfo.dk/Cool/cookie_menu.php
Har følgende kilde (den samme som er vist her på eksperten):
Avatar billede lademan Novice
12. juni 2003 - 00:20 #35
<html>
<head>
<title>Menu</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function ShowHide(id){
var act = "0";
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
if(styleObj.display == "none"){
styleObj.display = "";
act = "1";
}else{
styleObj.display = "none"
}
updateCookie(id,act);
}

function updateCookie(id,act){
    if(document.cookie){
        var oldCook = document.cookie;
        var tmp = oldCook.split(";");
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                break;
            }
        }
        var updated = false;
        for (i=0;newCook.length>i;i++){
            if (newCook[i].indexOf(id+"-")==0){
                newCook[i] = id+"-"+act;
                updated = true;
                break;
            }
        }
        if(!updated){
            newCook[newCook.length] = id+"-"+act;
        }
    }else{
        newCook = new Array();
        newCook[0] = id+"-"+act;
    }
    var exp = new Date();
    exp.setYear(exp.getFullYear()+1);//cookien gælder et år
    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString();
    document.cookie = txt;
}

function updateShowHide(){
    if (document.cookie){
        var tmp = document.cookie.split(";");
        var cook = false;
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                cook = true;
                break;
            }
        }
        if(cook){
            for (i=0;newCook.length>i;i++){
                id = newCook[i].substring(0,newCook[i].indexOf("-"));
                act = newCook[i].charAt(newCook[i].length-1);
                var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
                if(act==0)styleObj.display = "none";
                else styleObj.display = "";
            }
        }
    }
}
</SCRIPT>
</head>

<body bgcolor="#FFFFFF" text="#000000" onload="updateShowHide()">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td onClick="java script:ShowHide('menu_box_1')" title="vis / gem" bgcolor="#999999">1</td>
  </tr>
</table>
<div name="menu_box_1" id="menu_box_1" style="display:none">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td bgcolor="#FF6600">OLAV</td>
    </tr>
  </table>
</div>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td onClick="java script:ShowHide('menu_box_2')" title="vis / gem" bgcolor="#999999">2</td>
  </tr>
</table>
<div name="menu_box_2" id="menu_box_2" style="display:none">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td bgcolor="#FF6600">OLAV</td>
    </tr>
  </table>
</div>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td onClick="java script:ShowHide('menu_box_3')" title="vis / gem" bgcolor="#999999">3</td>
  </tr>
</table>
<div name="menu_box_3" id="menu_box_3" style="display:none">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td bgcolor="#FF6600">OLAV</td>
    </tr>
  </table>
</div>
</body>
</html>
Avatar billede lademan Novice
12. juni 2003 - 00:22 #36
Jeg får flg. fejlmedd, når scriptet ryger online: "newCook er ikke defineret" (linje 35)
Avatar billede lademan Novice
12. juni 2003 - 00:29 #37
Dvs det er i update-sektionen den er gal :-}
Avatar billede roenving Novice
12. juni 2003 - 00:33 #38
Yes, prøv at udskifte det her -- tror det er pga. cookiernes natur -- det'r zq lige før man skal formattere harddisken for at teste sådan noget ordentligt ,-)


function updateCookie(id,act){
    var found = false;
    if(document.cookie){
        var oldCook = document.cookie;
        var tmp = oldCook.split(";");
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                found = true;
                break;
            }
        }
        var updated = false;
        if (found){
        for (i=0;newCook.length>i;i++){
            if (newCook[i].indexOf(id+"-")==0){
                newCook[i] = id+"-"+act;
                updated = true;
                break;
            }
        }
        }else{newCook = new Array();}
        if(!updated){
            newCook[newCook.length] = id+"-"+act;
        }
    }else{
        newCook = new Array();
        newCook[0] = id+"-"+act;
    }
    var exp = new Date();
    exp.setYear(exp.getFullYear()+1);//cookien gælder et år
    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString();
    document.cookie = txt;
}

-- bare den function ...
Avatar billede lademan Novice
12. juni 2003 - 00:35 #39
YEEES!!!
Avatar billede lademan Novice
12. juni 2003 - 00:35 #40
Avatar billede lademan Novice
12. juni 2003 - 00:36 #41
Du må hellere lige konfimere, at jeg har den rigtige kode nu:
Avatar billede lademan Novice
12. juni 2003 - 00:36 #42
<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function ShowHide(id){
var act = "0";
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
if(styleObj.display == "none"){
styleObj.display = "";
act = "1";
}else{
styleObj.display = "none"
}
updateCookie(id,act);
}

function updateCookie(id,act){
    var found = false;
    if(document.cookie){
        var oldCook = document.cookie;
        var tmp = oldCook.split(";");
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                found = true;
                break;
            }
        }
        var updated = false;
        if (found){
        for (i=0;newCook.length>i;i++){
            if (newCook[i].indexOf(id+"-")==0){
                newCook[i] = id+"-"+act;
                updated = true;
                break;
            }
        }
        }else{newCook = new Array();}
        if(!updated){
            newCook[newCook.length] = id+"-"+act;
        }
    }else{
        newCook = new Array();
        newCook[0] = id+"-"+act;
    }
    var exp = new Date();
    exp.setYear(exp.getFullYear()+1);//cookien gælder et år
    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString();
    document.cookie = txt;
}

function updateShowHide(){
    if (document.cookie){
        var tmp = document.cookie.split(";");
        var cook = false;
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                cook = true;
                break;
            }
        }
        if(cook){
            for (i=0;newCook.length>i;i++){
                id = newCook[i].substring(0,newCook[i].indexOf("-"));
                act = newCook[i].charAt(newCook[i].length-1);
                var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
                if(act==0)styleObj.display = "none";
                else styleObj.display = "";
            }
        }
    }
}
</SCRIPT>
Avatar billede lademan Novice
12. juni 2003 - 00:37 #43
Hvad lavede du anderledes?
Erstatter den en eksisterende cookie eller hvordan?
Avatar billede roenving Novice
12. juni 2003 - 00:38 #44
-- jeg får også det samme hvergang -- øv, hvor skal man være på detaljer med småkager ...

det er måske derfor en af mine venner omtaler værtshuståber som småkager ;O)
Avatar billede roenving Novice
12. juni 2003 - 00:39 #45
Nej, fejlen kom sig af, at cookien ikke indeholdt nogen værdi vi kunne genkende, så den variabel, som vi bruger for at vedligeholde de forskellige tilstande var ikke opstået endnu -- det sørgede jeg så for, at den var ...
Avatar billede roenving Novice
12. juni 2003 - 00:41 #46
Det var den udgave, jeg sidst så, så den skulle være fjong <;=D
Avatar billede lademan Novice
12. juni 2003 - 00:42 #47
Kanon...! Virker den i din browser nu?
Avatar billede roenving Novice
12. juni 2003 - 00:54 #48
Ja, men først efter igen at have slettet cookien ...

Gaab, nu har jeg lært, at hvis man skal arbejde med cookies, så er udløbstiden i udviklingsfasen så kort, at man kan tåle at vente på, at den dør ...

Sleep well ...
Avatar billede lademan Novice
12. juni 2003 - 08:15 #49
Tak for hjælpen! Du kan se resultatet i højremenuen her: www.surfersinfo.dk/Cool/
Avatar billede roenving Novice
12. juni 2003 - 10:31 #50
-- og jeg kan bekræfte, at den virker -- da jeg sidst var inde på den i nat efterlod jeg alle sammenklappede, hvilket var præcis hvad de blev til nu, bingo !O]
Avatar billede lademan Novice
12. juni 2003 - 10:51 #51
Cool!
Avatar billede lademan Novice
12. juni 2003 - 10:53 #52
Et eller andet sted er det måske ikke så smart, at brugerne skal slette deres cookies før scriptet virker korrekt? :-O
Avatar billede lademan Novice
12. juni 2003 - 10:54 #53
Jeg fik en kammerat (ved en anden computer) til at prøve funktionen, men han skulle også slette sine cookies før scriptet virkede :-(
Avatar billede lademan Novice
12. juni 2003 - 10:56 #54
Du har ikke et forslag til, hvordan vi kan undgå det?
(jeg uddeler gerne flere points :-)
Avatar billede roenving Novice
12. juni 2003 - 11:36 #55
Kunne du få en til at fange fejl-meddelelsen, når det ikke virker ?-)
Avatar billede lademan Novice
12. juni 2003 - 12:24 #56
http://www.eksperten.dk/spm/363641
Prøv følgende:
1) slet dine cookies
2) gå ind på www.surfersinfo.dk/Cool/ og sikre dig at den laver en cookie
3) gå derefter ind på www.surfersinfo.dk/Cool/cookie_menu.php
Avatar billede lademan Novice
12. juni 2003 - 12:25 #57
Øverste eksperten-link skal du bare ignorere, det var en fejl :-)
Avatar billede lademan Novice
12. juni 2003 - 12:29 #58
Kan du se, at den melder fejl i linje 74: "document.all[...].style er nul eller ikke et objekt" ?
Avatar billede roenving Novice
12. juni 2003 - 12:31 #59
-- den fejl havde jeg een gang kan jeg huske, men på et tidspunkt kom vi jo hurtigt igennem en masse, så ...

-- øjeblik !-)
Avatar billede lademan Novice
12. juni 2003 - 12:39 #60
Og hvis du går tilbage til www.surfersinfo.dk/Cool/ ,efter at du har fedtet rundt på cookie_menu.php, viser den nu også fejl der...

Der er vist en lille cookie-kamp på spil :-)
Avatar billede roenving Novice
12. juni 2003 - 12:48 #61
-- såvidt jeg kunne se i koden har du ikke alle numre med ?-)

altså menu_box_0, menu_box_1, menu_box_2, menu_box_3, menu_box_4

-- alene fordi det er 5 menuboxe, som også er med i min cookie ?-)
Avatar billede lademan Novice
12. juni 2003 - 12:50 #62
hvor skal de indføres?
Avatar billede roenving Novice
12. juni 2003 - 12:54 #63
Du har 0, 1, 3 og 4 -- kunne det være et gæt, at fejlen opstår fordi, der på et tidspunkt var en 2er også ?-)
Avatar billede lademan Novice
12. juni 2003 - 12:56 #64
hmmm, jeg er ikke med?
Avatar billede lademan Novice
12. juni 2003 - 12:58 #65
Jeg har ændret rækkefølgen til 0,1,2,3 nu... :-)
Avatar billede lademan Novice
12. juni 2003 - 13:05 #66
ligger problemet i, at numrene skal være i rækkefølge?
Avatar billede roenving Novice
12. juni 2003 - 13:15 #67
Næh, ikke specielt, men hvis numrene een gang har været med, vil den jo forsøge at finde en div med det id -- og det var det, som gik galt hos mig -- den forsøgte at finde document.all['menu_box_2') og det kunne den selvfølgelig ikke ...

Hvis vi omskriver de meget korte betingelses-statements kan vi også teste for det -- det vil jeg kigge på senere i dag, jeg skal til et møde snart ...
Avatar billede lademan Novice
12. juni 2003 - 13:21 #68
Kanon!
Avatar billede lademan Novice
12. juni 2003 - 13:22 #69
Jeg tror problemet ligger i, at cookiesystemet i /Cool/ skal finde ud af at køre i samhørighed med andre cookieværdier fra /Cool/cookie_menu.php eller som i min kammerats tilfælde: andre cookieværdier fra vores brugersystem ?
Avatar billede lademan Novice
12. juni 2003 - 16:55 #70
Du er ikke kommet nærmere problemets løsning ?o)
Avatar billede lademan Novice
12. juni 2003 - 20:28 #71
Har du kigget på omskrivningen ?o)
Avatar billede lademan Novice
12. juni 2003 - 22:42 #72
Nu har jeg fundet ud af det.

Grunden til at min kammerat ikke kunne få menuen til virke var at han brugte Mozilla, som browseren ikke tager højde for :-)
Avatar billede roenving Novice
13. juni 2003 - 07:09 #73
Det tog lige lidt længere tid at komme gennem dagen end jeg havde regnet med, men her er den skrevet om, så du kan tillade dig at tilføje og fjerne objekter, som ellers er berørt af cookien:

<SCRIPT LANGUAGE="javascript" TYPE="text/javascript">
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5 =(document.getElementById)? true:false
ns6 = (document.getElementById && !document.all)?true:false;

function ShowHide(id){
var act = "0";
var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style;
if(styleObj.display == "none"){
styleObj.display = "";
act = "1";
}else{
styleObj.display = "none"
}
updateCookie(id,act);
}

function updateCookie(id,act){
    var found = false;
    if(document.cookie){
        var oldCook = document.cookie;
        var tmp = oldCook.split(";");
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                found = true;
                break;
            }
        }
        var updated = false;
        if (found){
        for (i=0;newCook.length>i;i++){
            if (newCook[i].indexOf(id+"-")==0){
                newCook[i] = id+"-"+act;
                updated = true;
                break;
            }
        }
        }else{newCook = new Array();}
        if(!updated){
            newCook[newCook.length] = id+"-"+act;
        }
    }else{
        newCook = new Array();
        newCook[0] = id+"-"+act;
    }
    var exp = new Date();
    exp.setYear(exp.getFullYear()+1);//cookien gælder et år
    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString();
    document.cookie = txt;
}

function updateShowHide(){
    if (document.cookie){
        var tmp = document.cookie.split(";");
        var cook = false;
        for (i=0;tmp.length>i;i++){
            if (tmp[i].indexOf("ShowHide=")!=-1){
                newCook = tmp[i].substring(9+tmp[i].indexOf("ShowHide=")).split(":");
                cook = true;
                break;
            }
        }
        if(cook){
            for (i=0;newCook.length>i;i++){
                id = newCook[i].substring(0,newCook[i].indexOf("-"));
                act = newCook[i].charAt(newCook[i].length-1);
                var styleObj = null;
                if(ns4){
                    styleObj = document.layers[id];
                }else    if(ie4){
                      if (document.all[id]){styleObj = document.all[id].style;}
                  }else{
                    if (document.getElementById(id)){styleObj = document.getElementById(id).style;}
                  }
                if (styleObj){
                    if(act==0){
                        styleObj.display = "none";
                    }else{
                        styleObj.display = "";
                    }
                }
            }
        }
    }
}
</SCRIPT>


Bemærk, at den et-linjes betingelsessætning nu fylder 12 - 13 linjer !-)

I øvrigt burde Mozilla faktisk æde den, for den skulle kende getElementById ...
Avatar billede roenving Novice
13. juni 2003 - 07:11 #74
-- og måden vi producerer kager på burde sikre, at vi kun får fat i vores egne dele af det

-- logikken er ihvertfald, at vi ser om vores cookie er der, hvis den er, så gør vi noget, hvis ikke gør vi ikke noget ...
Avatar billede lademan Novice
13. juni 2003 - 08:49 #75
det virker perfekt i min ie-browser :-))

har lige downloadet mozilla for at tjekke, men der virker det mærkelig nok ikke ?o)
Avatar billede lademan Novice
13. juni 2003 - 08:50 #76
dvs den melder ikke fejl, den gemmer bare ikke instillingerne
Avatar billede roenving Novice
13. juni 2003 - 08:52 #77
-- er der en mulighed for specielle cookie-indstillinger i Mozilla ?-)

-- måske er den standard indstillet til at den ikke må spise kager !o]
Avatar billede lademan Novice
13. juni 2003 - 09:32 #78
hehe... :-)

nej, den vil godt gemme mine login-oplysninger i vores brugersystem
Avatar billede roenving Novice
13. juni 2003 - 09:41 #79
Måske en dag jeg skal overveje at downloade også den ...
Avatar billede lademan Novice
13. juni 2003 - 09:47 #80
Hmm, det samme gør sig gældende i Netscape 7.0 - dvs den melder ikke fejl, den gemmer bare ikke instillingerne
Avatar billede roenving Novice
13. juni 2003 - 09:49 #81
Har du prøvet at se på indholdet af kagerne ?
Avatar billede lademan Novice
13. juni 2003 - 09:53 #82
hvor gemmer ns sine cookies?
Avatar billede roenving Novice
13. juni 2003 - 09:55 #83
Orv, det var et godt spm ...
men hvis du bruger XP eller 2000 eller har flerbrugermulighed i 9x bliver den jo nødt til at følge styresystemet, og så kan du jo søge på nyeste filer under documents and setting\lademan
Avatar billede lademan Novice
13. juni 2003 - 10:00 #84
meningen er, at den menu som du har lavet skal bruges på hele sitet surfersinfo.dk

jeg kan se, at cookien gemmes under mappen (der nu hedder www.surfersinfo.dk/1/) - kunne den ikke gemmes, så den virker på hele sitet, dvs i roden og de forskellige mapper?
Avatar billede roenving Novice
13. juni 2003 - 10:02 #85
Jeg mener ikke at man kan kontrollere den slags, men jeg ved det ikke ...
Avatar billede roenving Novice
13. juni 2003 - 10:10 #86
Jeg fandt forøvrigt en henvisning til hvor Netscape gør af cookies: cookies.txt
Avatar billede lademan Novice
13. juni 2003 - 10:10 #87
i php kan man gøre det således:

<?php
setcookie("bruger", "$brugernavn", time() + 5184000, "/", ".surfersinfo.dk");
?>

Ved ikke om man kan gøre noget tilsvarende med javascript?
Avatar billede lademan Novice
13. juni 2003 - 10:11 #88
oki, tjekker lige :-)
Avatar billede lademan Novice
13. juni 2003 - 10:17 #89
hmm, har gennemsøgt computeren, men kan ikke finde den
Avatar billede roenving Novice
13. juni 2003 - 10:19 #90
Nu kom jeg så langt, at jeg kan sige, at det kan vi også i javascript -- men jeg læser lige artiklen færdig ...

-- forøvrigt ganske god at få lidt yderligere forstand ...
http://www.cookiecentral.com/faq/#note
Avatar billede lademan Novice
13. juni 2003 - 10:24 #91
okay... i øvrigt virker ekspertens menuer, der kan det samme som vores script, i ns7 og mozilla - bastarder :-]
Avatar billede roenving Novice
13. juni 2003 - 10:32 #92
-- måske har det noget med den der path, men løsningen på path er simpel:

I den sidste del af updateCookie:

    var exp = new Date();
    exp.setYear(exp.getFullYear()+1);//cookien gælder et år
    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString()+"; path=/";
    document.cookie = txt;
}
Avatar billede lademan Novice
13. juni 2003 - 10:34 #93
set_cookie(variabel,værdi,$cookie_expire,'/',domæne);
Avatar billede roenving Novice
13. juni 2003 - 10:39 #94
-- og vi kan også sætte domæne, hvis du vil have det:

    var txt = "ShowHide="+newCook.join(":")+"; expires="+exp.toGMTString()+"; path=/; domain=.surfersinfo.dk";
Avatar billede lademan Novice
13. juni 2003 - 10:40 #95
kanon !o)
Avatar billede lademan Novice
13. juni 2003 - 10:50 #96
hvordan får vi ns og mozilla til at virke?
Avatar billede roenving Novice
13. juni 2003 - 10:54 #97
Jeg har lige dobbeltchecket med to forskellige kilder, som enstemmigt siger, at vi skal gøre som vi gør, så virker det fra Netscape 2 og IE 3 ...
Avatar billede lademan Novice
13. juni 2003 - 10:56 #98
okay... så grunden til, at jeg ikke se noget, er fordi cookies ikke er slået til mener du?
Avatar billede lademan Novice
13. juni 2003 - 10:59 #99
har lige fundet ud af, hvordan jeg ser mine cookies i ns7...

ns7 lagrer oplysningerne korrekt, men alligevel vises menuerne ikke korrekt
Avatar billede lademan Novice
13. juni 2003 - 11:03 #100
ahhh, det er kun de 2 øverste menuer den ikke vil vise korrekt

den eneste forskel på de to øverste kontra de to nederste er, at  style="display:none" på de nederste...
Avatar billede lademan Novice
13. juni 2003 - 11:06 #101
hmm, dvs vi er tvunget til at sætte de to øverste til "display:none"?
Avatar billede roenving Novice
13. juni 2003 - 11:12 #102
Er der ikke nogen display på de øverste ?-)
Avatar billede lademan Novice
13. juni 2003 - 11:13 #103
så, nu virker menuen i ie, ns og mozilla ... :-))
Avatar billede roenving Novice
13. juni 2003 - 11:13 #104
Prøv at sætte disply:block; på de øverste !-)
Avatar billede lademan Novice
13. juni 2003 - 11:33 #105
hehe... så virker det ikke mozilla... det er sgu svært at alle tilfreds i den her verden :o]
Avatar billede roenving Novice
13. juni 2003 - 11:36 #106
De ER skøre, de romere ,o]
Avatar billede lademan Novice
13. juni 2003 - 11:48 #107
hehe, og jeg formår ikke at skrive sætninger, der giver mening (11:33) :-)
Avatar billede roenving Novice
13. juni 2003 - 11:50 #108
*g*
Avatar billede lademan Novice
13. juni 2003 - 13:52 #109
hehe, det er sgu helt mærkeligt, at scriptet er færdigt - hvad så med denne tråd :-))
Avatar billede roenving Novice
13. juni 2003 - 13:54 #110
Du må jo åbne en ny -- i en anden farve, så trøjen ikke bliver alt for kedelig at kigge på !-)
Avatar billede lademan Novice
13. juni 2003 - 14:00 #111
hehe, ja det er sgu lige før :-)
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