Ich möchte einen Cookie-Wert jedes Mal inkrementieren, wenn eine Seite referenziert wird, selbst wenn die Seite aus dem Cache geladen wird. Was ist der "beste" oder prägnanteste Weg dies umzusetzen?Was ist der "beste" Weg, um einen einzelnen Cookie-Wert zu erhalten und zu setzen mit JavaScript
Antwort
Stolen aus http://www.quirksmode.org/js/cookies.html#script
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toUTCString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
es mit:
var oldCount = parseInt(readCookie('hitCount'), 10) || 0;
createCookie('hitCount', oldCount + 1, 7);
Wie in den Kommentaren darauf hingewiesen, sollten Sie zu einem int casten, da Cookies sind gespeichert und als Zeichenfolgen zurückgegeben. Mit foo++
oder ++foo
wird gegossen tatsächlich für Sie, aber es ist sicherer, genau zu wissen, was Sie gerade arbeiten:
var x = "5"; // x = "5" (string)
x += 1; // x = "51" (string!)
x += 5; // x = "515" (string!)
++x; // x = 516 (number)
Die meisten der alten Cookie-Handling-Funktionen die ich gesehen habe zum Speichern einer Abfragewert, wie this Beispiel einfache String-Manipulationen verwenden, können Sie andere Bibliotheken verwenden, wie cookie-js, eine kleine (< 100 Zeilen) Dienstprogramm für Cookie Zugriff.
ich persönlich jQuery auf meine Projekte zu verwenden, und ich verwende die jQuery Cookie Plugin, es ist wirklich einfach zu bedienen:
var cookieName = "increment";
if ($.cookie(cookieName) == null){
$.cookie(cookieName, 1, { expires: 10 });
}else{
var newValue = Number($.cookie(cookieName)) + 1;
$.cookie(cookieName, newValue, { expires: 10 });
}
der beste Weg ist immer der einfachste:
function getCookie(name) {
return (name = (document.cookie + ';').match(new RegExp(name + '=.*;'))) && name[0].split(/=|;/)[1];
}
// the default lifetime is 365 days
function setCookie(name, value, days) {
var e = new Date;
e.setDate(e.getDate() + (days || 365));
document.cookie = name + "=" + value + ';expires=' + e.toUTCString() + ';path=/;domain=.' + document.domain;
}
diese Funktionen erwarten den Wert um eine einfache Zeichenfolge zu sein, aber Sie können immer JSON.stringify es, wenn Sie wollen oder vielleicht etwas anderes damit tun ...
- 1. Was ist der beste Weg, um einen Cookie mit Namen in JavaScript zu erhalten?
- 2. Was ist der beste Weg, um einen Index zu erstellen, um die schnellste Leseantwort zu erhalten?
- 3. Was ist der beste Weg, um einen Datenrahmen zu umgehen?
- 4. Was ist der beste Weg, um einen InputStream zu überwachen?
- 5. Was ist der beste Weg, um einen ByteArrayOutputStream zu schließen?
- 6. Was ist der beste Weg, um einen "Timer" zu implementieren?
- 7. Was ist der beste Weg, um einen einzelnen Datensatz über eine OleDbConnection zu holen?
- 8. Was ist der beste Weg, Zeitzonen mit Javascript zu behandeln
- 9. Was ist der beste Weg, Ports in PM2 zu setzen?
- 10. Was ist der beste Weg, um einen JavaScript-Code zu verschlüsseln/zu schützen?
- 11. Was ist der beste Weg, um mit NHibernate zu beginnen?
- 12. Was ist der beste Weg, um mit OSGI zu beginnen?
- 13. Was ist der beste Weg, PHP-Anwendungen zu erhalten?
- 14. Mit JQuery, was ist der beste Weg, um Ereignislistener für Radiobuttons onclick zu setzen?
- 15. Was ist der beste Weg, um eine Animation zu fahren?
- 16. Was ist der beste Weg, um einen eindeutigen Schlüssel zu erstellen und dauerhaft zu verschlüsseln?
- 17. Was ist der beste Weg, Namenskonflikte in Javascript zu lösen?
- 18. Was ist der beste Weg, um mehrere Suchoptionen zu behandeln?
- 19. Was ist der beste Weg, Datumsunterschied in Javascript zu berechnen
- 20. Was ist der beste Weg, um eine Tabelle zu deduplizieren?
- 21. Was ist der beste Weg, um eine Enumeration zu erhöhen?
- 22. Was ist der beste Weg, um mehrere Aktionen zu behandeln?
- 23. Was ist der beste Weg, um einen Stream um
- 24. Was ist der beste Weg, um vorberechnete Daten zu implementieren?
- 25. Was ist der beste Weg, um eine Liste zu kopieren?
- 26. Was ist der beste Weg, um eine Eigenschaft zu deklarieren?
- 27. Was ist der beste Weg, um srand() zu säen?
- 28. Was ist der beste Weg, um einen Pfad und einen Dateinamen in C# /. NET zu kombinieren?
- 29. Was ist der beste Weg zu
- 30. Was ist der beste Weg, um innere Produkte zu bilden?
readCookie gibt einen Teilstring, sollten Sie es als eine Zahl beim Inkrementieren 1, sonst haben Sie , 1, 11, 111, 1111 ... – CMS
Sie fehlen Escape und Unescape für den Wert – hultqvist
Beachten Sie, dass toGMTString jetzt zugunsten von toUTCString veraltet ist – BeauCielBleu