Avatar billede Slettet bruger
26. maj 2006 - 16:58 Der er 9 kommentarer og
1 løsning

Skrive simpel cookie

Hejsa

Kan man ikke i Java-script skrive en simpel cookie?
Jeg har her førlgende adresse: http://www.fdffunk.dk/test2/

Når man så klikker på en farve i den hvide side skal der være en onclick-event som skriver en cookie med informationer om den farve som blev valgt, sådan at den farve automatisk vises næste gang siden besøges...
Og det ville også være dejligt hvis man i Java-script kunne lave det således at cookien også kunne læses i asp senere hen...

Men er der ikke nogen som kender en simpel function som kan lave en cookie i Java-script - jeg har fundet et eksempel på www.w3schools.com men den kunne jeg ikke få til at fungere...

På forhånd tak!

\Dan
Avatar billede nico26 Nybegynder
26. maj 2006 - 17:57 #1
Avatar billede nico26 Nybegynder
26. maj 2006 - 17:58 #2
oops - havde ikke set det sidste du skrev :)
Avatar billede nico26 Nybegynder
26. maj 2006 - 17:58 #3
hvorfor virker den ikke?
Avatar billede Slettet bruger
26. maj 2006 - 19:22 #4
OK!

her har jeg koden for den side som er i iframen:

<html>
<head>
<script language="Javascript">
function setCookie(value){
var exdate=new Date()exdate.setDate(365)
document.cookie="backg"=" +escape(value)+365==null) ? "" : ";expires="+exdate)
}
</script>
</head>
<body>
<div style="text-align: center; font-family: Verdana; font-size: 16px; color: #999999;">
Vælg baggrund
</div>
<div style="text-align: center;">
<table cellpadding="0" cellspacing="0" border="0" width="80%">
<tr>
<td width="25%" style="background-color: #333333;" onmouseover="top.backg(this.style.backgroundColor);" onclick="setCookie(this.style.backgroundColor);  this.onmouseout='';" onmouseout="top.backg('#ff0000');" height="70">
</td>
<td width="25%" style="background-color: #00ff00;" onmouseover="top.backg(this.style.backgroundColor);" onclick="setCookie(this.style.backgroundColor); this.onmouseout='';" onmouseout="top.backg('#ff0000');" height="70">
</td>
<td width="25%" style="background-color: #0000ff;" onmouseover="top.backg(this.style.backgroundColor);" onclick="setCookie(this.style.backgroundColor); this.onmouseout='';" onmouseout="top.backg('#ff0000');" height="70">
</td>
<td width="25%" style="background-color: #ff0000;" onmouseover="top.backg(this.style.backgroundColor);" onclick="setCookie(this.style.backgroundColor); this.onmouseout='';" onmouseout="top.backg('#ff0000');" height="70">
</td>
</tr>
</table>
</div>
</body>
</html>

- og her har jeg så også forsøgt mig med det eksempel med cookies fra W3SCHOOLS...

- men jeg kan ikke få det til at fungere... For jeg vil kun have én værdi med i strengen...

\Dan
Avatar billede loevgaard Praktikant
26. maj 2006 - 19:38 #5
Dit JS giver ikke rigtig nogen mening, hvad er det du vil?
Avatar billede Slettet bruger
26. maj 2006 - 19:46 #6
Det jeg vil er at gemme en cookie som hedder "backg" på klientens computer. Denne cookie skal så indeholde baggrundsfarven på hovedsiden...
Nå man så klikker på én af farverne skal cookien blive gemt... se det link som jeg skrev i første indlæg...

\Dan
Avatar billede nyp Nybegynder
27. maj 2006 - 11:37 #7
Jeg bruger nedenstående, beskrivelse øverst
/*
myCookie = new tool_cookie();
myCookie.setCookie("cookieName","cookieValue"[,daysUntilExpire][,"DomainePath"][,"DomaineName"][,"SecureValue"]);
myCookieValue = myCookie.getCookie("cookieName");
myCookie.deleteCookie("cookieName"[,"DomainePath"][,"DomaineName"]); 
*/

var tool_cookie = function()
{
}

tool_cookie.prototype.setCookie = function(vName, vValue, vDays, vPath, vDomain, vSecure)
{
    if (vDays)
    {
          this.date = new Date();
          this.date.setTime(this.date.getTime()+(vDays*24*60*60*1000));
    }
    else this.date = "";
  document.cookie= vName + "=" + escape(vValue) + ((this.date) ? "; expires=" + this.date.toGMTString() : "") + ((vPath) ? "; path=" + vPath : "") + ((vDomain) ? "; domain=" + vDomain : "") + ((vSecure) ? "; secure" + vSecure : "");
}

tool_cookie.prototype.getCookie = function(vName)
{
    this.dc = document.cookie;
    this.prefix = vName + "=";
    this.begin = this.dc.indexOf("; " + this.prefix);
    if (begin == -1)
    {
        this.begin = this.dc.indexOf(this.prefix);
        if (this.begin != 0) return null;
    }
    else this.begin += 2;

    this.end = document.cookie.indexOf(";", this.begin);
    if (this.end == -1) this.end = this.dc.length;
    return unescape(this.dc.substring(this.begin + this.prefix.length, this.end));
}

tool_cookie.prototype.deleteCookie = function(vName, vPath, vDomain)
{
    if (this.getCookie(vName)) document.cookie = vName + "=" + ((vPath) ? "; path=" + vPath : "") + ((vDomain) ? "; domain=" + vDomain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
Avatar billede Slettet bruger
30. maj 2006 - 01:33 #8
hmm... det blev jeg ikke meget klogere af det der...

Jeg vil jo gerne bare gemme en cookie på klientens computer via en Java-function, og jeg vil gerne bruge det eksempel fra W3SCHOOLS, det skal bare simplificeres lidt...

altså jeg skal KUN have det som skal stå i selve cookien med i min streng - resten skal være statisk i funktionen...

- og i øvrigt skal det også laves sådan at cookies så kan hentes i asp senere hen...

\Dan
Avatar billede nyp Nybegynder
30. maj 2006 - 09:06 #9
<html>
<head>
<script language="Javascript">
var tool_cookie = function()
{
}

tool_cookie.prototype.setCookie = function(vName, vValue, vDays, vPath, vDomain, vSecure)
{
    if (vDays)
    {
          this.date = new Date();
          this.date.setTime(this.date.getTime()+(vDays*24*60*60*1000));
    }
    else this.date = "";
  document.cookie= vName + "=" + escape(vValue) + ((this.date) ? "; expires=" + this.date.toGMTString() : "") + ((vPath) ? "; path=" + vPath : "") + ((vDomain) ? "; domain=" + vDomain : "") + ((vSecure) ? "; secure" + vSecure : "");
}

tool_cookie.prototype.getCookie = function(vName)
{
    this.dc = document.cookie;
    this.prefix = vName + "=";
    this.begin = this.dc.indexOf("; " + this.prefix);
    if (this.begin == -1)
    {
        this.begin = this.dc.indexOf(this.prefix);
        if (this.begin != 0) return null;
    }
    else this.begin += 2;

    this.end = document.cookie.indexOf(";", this.begin);
    if (this.end == -1) this.end = this.dc.length;
    return unescape(this.dc.substring(this.begin + this.prefix.length, this.end));
}

tool_cookie.prototype.deleteCookie = function(vName, vPath, vDomain)
{
    if (this.getCookie(vName)) document.cookie = vName + "=" + ((vPath) ? "; path=" + vPath : "") + ((vDomain) ? "; domain=" + vDomain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
}

myCookie = new tool_cookie();

</script>
</head>
<body>
<div style="text-align: center; font-family: Verdana; font-size: 16px; color: #999999;">
Vælg baggrund
</div>
<div style="text-align: center;">
<table cellpadding="0" cellspacing="0" border="0" width="80%">
<tr>
<td width="25%" style="background-color: #333333;" onmouseover="" onclick="myCookie.setCookie('backg',this.style.backgroundColor);  this.onmouseout='';" onmouseout="" height="70">
</td>
<td width="25%" style="background-color: #00ff00;" onmouseover="" onclick="myCookie.setCookie('backg',this.style.backgroundColor); this.onmouseout='';" onmouseout="" height="70">
</td>
<td width="25%" style="background-color: #0000ff;" onmouseover="" onclick="myCookie.setCookie('backg',this.style.backgroundColor); this.onmouseout='';" onmouseout="" height="70">
</td>
<td width="25%" style="background-color: #ff0000;" onmouseover="" onclick="myCookie.setCookie('backg',this.style.backgroundColor); this.onmouseout='';" onmouseout="" height="70">
</td>
</tr>
</table>
</div>
</body>
</html>
Avatar billede Slettet bruger
20. juni 2006 - 13:35 #10
hmm... jeg opgav idéen med den Java-cookie-ting...

\Dan
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