Aktualisieren von Cookies in JavaScript

Das Aktualisieren eines Cookies unterscheidet sich geringfügig vom Ersetzen eines Cookies, da der neue Wert, den wir in das Cookie einfügen möchten, in gewisser Weise davon abhängt, ob das Cookie bereits vorhanden ist und wenn ja, was es enthält. Dies bedeutet, dass wir den vorhandenen Cookie lesen müssen, bevor wir einen Ersatz dafür schreiben können.

Wenn wir ein Cookie lesen, können wir nicht sagen, wann das vorhandene Cookie abläuft oder ob das Cookie auf einen bestimmten Ordner beschränkt oder in der gesamten Domain verfügbar ist. Sie müssen einen neuen Aufbewahrungszeitraum festlegen, wenn Sie das Cookie ersetzen, und Sie müssen nachverfolgen, welchen Bereich das Cookie auf Ihren Seiten haben soll, um jedes Mal dieselbe Domain- oder Pfadoption anzuwenden. Das einzige, was Sie beim Aktualisieren tatsächlich lesen können, anstatt nur ein Cookie zu ersetzen, ist der tatsächliche Wert der im Cookie gespeicherten Daten.

In diesem Beispiel verwenden wir ein Cookie mit dem Namen 'accesscount', um zu zählen, wie oft unser Besucher auf unsere Seite zugegriffen hat, wobei zwischen den Besuchen nicht mehr als sieben Tage vergangen sind. Sollten zwischen den Besuchen mehr als sieben Tage vergehen, verfällt der Cookie und der nächste Besuch wird von Null an neu gezählt. Wir verwenden die Funktionen allCookies () und writeCookie () aus den vorherigen Beispielen, sodass der einzige neue Code, den wir für die eigentliche Aktualisierung benötigen, in den letzten beiden Zeilen steht.

var cookie;
allCookies = function ()
var cr, ck, cv;
cr = []; if (document.cookie! = ")
ck = document.cookie.split (';');
für (var i = ck.length - 1; i> = 0; i--)
cv = ck.split ('=');
cr [ck [0]] = ck [1];


return cr;
;
writeCookie = function (cname, cvalue, days, opt)
var dt, verfällt, Option;
wenn (Tage)
dt = neues Datum ();
dt.setTime (dt.getTime () + (Tage * 24 * 60 * 60 * 1000));
expires = "; expires =" + dt.toGMTString ();
sonst läuft ab = ";
if (opt)
if ('/' = substr (opt, 0,1)) option = "; path =" + opt;
sonst option = "; domain =" + opt;
else option = ";
document.cookie = cname + "=" + cvalue + expires + option;

cookie = allCookies ();
if (cookie.accesscount! = null) writeCookie ('mycookie', cookie.accesscount + 1,7);
sonst writeCookie ('mycookie', 1,7);