2010-01-27 23 views
222

Ist meine Funktion zum Erstellen eines Cookies korrekt? Wie lösche ich den Cookie zu Beginn meines Programms? Gibt es eine einfache Codierung?Wie lösche ich einen Cookie?

function createCookie(name,value,days) 
function setCookie(c_name,value,1) { 
    document.cookie = c_name + "=" +escape(value); 
} 

setCookie('cookie_name',mac); 

function eraseCookie(c_name) { 
    createCookie(cookie_name,"",-1); 
} 
+0

w3schools hat gute Funktionen für Cookies unter https://www.w3schools.com/js/js_cookies.asp. Sie können 'setCookie ('name', 'value', 0)' verwenden, um ein Cookie zu löschen. – Pete

Antwort

76

Hier ist ein guter Link auf Quirksmode.

function setCookie(name,value,days) { 
    var expires = ""; 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime() + (days*24*60*60*1000)); 
     expires = "; expires=" + date.toUTCString(); 
    } 
    document.cookie = name + "=" + (value || "") + expires + "; path=/"; 
} 
function getCookie(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) { 
    document.cookie = name+'=; Max-Age=-99999999;'; 
} 
+16

Anmerkung: 'toGMTString' [hat sich für' toUTCString' veraltet] (https://developer.mozilla.org/en- US/docs/Web/JavaScript/Referenz/Global_Objects/Date/toGMTString) – drzaus

+1

hinweis: falls nicht funktioniert, stellen sie sicher, dass "path" korrekt ist. siehe: https://developers.google.com/web/tools/chrome-devtools/manage-data/cookies – reversiblean

+0

Domäne sollte hinzugefügt werden. –

260

Versuchen Sie folgendes:

function delete_cookie(name, path, domain) { 
    if(get_cookie(name)) { 
    document.cookie = name + "=" + 
     ((path) ? ";path="+path:"")+ 
     ((domain)?";domain="+domain:"") + 
     ";expires=Thu, 01 Jan 1970 00:00:01 GMT"; 
    } 
} 

Oder:

function delete_cookie(name) { 
    document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
} 
+2

Wie stelle ich eine Funktion ein und überprüfe, was meine Cookies sind und ob sie noch ablaufen? – kennedy

+0

@Kennedy Die Antwort von jason könnte nützlich sein –

+0

Ich dachte an eine Funktion, um zuerst meinen Cookie zu sehen .. hast du irgendeine Codierung dafür? Ich möchte es sehen, wenn jedes Mal, wenn ich die Webseite besuche, automatisch eine Warnung darauf erscheint. – kennedy

13

Sie können dies tun, indem Sie das Datum des Verfalls zu gestern setzen.

Einstellung auf "-1" funktioniert nicht. Das kennzeichnet einen Cookie als Sessioncookie.

+0

ja, das ist was ich sehe. – chovy

+0

Ihr Beispiel funktioniert nicht, wenn Sie Cookies auf einer anderen Seite setzen und versuchen, sie von einer anderen Seite zu löschen. das Set funktioniert, kann aber nicht gelöscht werden. – chovy

+2

Ich endete damit: https://github.com/carhartl/jquery-cookie Und Sie müssen löschen mit Pfad: '/' – chovy

18

würde das funktionieren?

function eraseCookie(name) { 
    document.cookie = name + '=; Max-Age=0' 
} 

Ich weiß Max-Age bewirkt, dass das Cookie ein Session-Cookie in IE sein, wenn das Cookie zu schaffen. Nicht sicher, wie es beim Löschen von Cookies funktioniert. Hier

+1

Dies funktioniert perfekt in Chrome –

7

ist eine Implementierung einer delete cookie Funktion mit Unicode-Unterstützung von Mozilla:

function removeItem(sKey, sPath, sDomain) { 
    document.cookie = encodeURIComponent(sKey) + 
        "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + 
        (sDomain ? "; domain=" + sDomain : "") + 
        (sPath ? "; path=" + sPath : ""); 
} 

removeItem("cookieName"); 

Wenn Sie AngularJS verwenden, versuchen $cookies.remove (darunter ein ähnliches approach verwendet):

$cookies.remove('cookieName'); 
4

löschen ein Cookie setze ich es wieder mit einem leeren Wert und verlaufe in 1 Sekunde. In Details, verwende ich eine der folgenden Aromen (Ich neige dazu, die zweite zu bevorzugen) immer:

1.

function setCookie(key, value, expireDays, expireHours, expireMinutes, expireSeconds) { 
     var expireDate = new Date(); 
     if (expireDays) { 
      expireDate.setDate(expireDate.getDate() + expireDays); 
     } 
     if (expireHours) { 
      expireDate.setHours(expireDate.getHours() + expireHours); 
     } 
     if (expireMinutes) { 
      expireDate.setMinutes(expireDate.getMinutes() + expireMinutes); 
     } 
     if (expireSeconds) { 
      expireDate.setSeconds(expireDate.getSeconds() + expireSeconds); 
     } 
     document.cookie = key +"="+ escape(value) + 
      ";domain="+ window.location.hostname + 
      ";path=/"+ 
      ";expires="+expireDate.toUTCString(); 
    } 

    function deleteCookie(name) { 
     setCookie(name, "", null , null , null, 1); 
    } 

Verbrauch:

setCookie("reminder", "buyCoffee", null, null, 20); 
deleteCookie("reminder"); 

function setCookie(params) { 
     var name   = params.name, 
      value   = params.value, 
      expireDays  = params.days, 
      expireHours  = params.hours, 
      expireMinutes = params.minutes, 
      expireSeconds = params.seconds; 

     var expireDate = new Date(); 
     if (expireDays) { 
      expireDate.setDate(expireDate.getDate() + expireDays); 
     } 
     if (expireHours) { 
      expireDate.setHours(expireDate.getHours() + expireHours); 
     } 
     if (expireMinutes) { 
      expireDate.setMinutes(expireDate.getMinutes() + expireMinutes); 
     } 
     if (expireSeconds) { 
      expireDate.setSeconds(expireDate.getSeconds() + expireSeconds); 
     } 

     document.cookie = name +"="+ escape(value) + 
      ";domain="+ window.location.hostname + 
      ";path=/"+ 
      ";expires="+expireDate.toUTCString(); 
    } 

    function deleteCookie(name) { 
     setCookie({name: name, value: "", seconds: 1}); 
    } 

Verbrauch:

setCookie({name: "reminder", value: "buyCoffee", minutes: 20}); 
deleteCookie("reminder"); 
0

hatte ich Probleme ein Cookie gemacht über JavaScript zu löschen und nachdem ich den Host es funktionierte hinzugefügt. Nach dem Löschen versuchen, die Cookies auf einer Domäne die folgenden die Ergebnisse zu sehen:

if (document.cookie.length==0) 
{ 
document.cookie = 'name=example; expires='+new Date((new Date()).valueOf()+1000*60*60*24*15)+'; path=/; domain='+location.host; 

if (document.cookie.length==0) {alert('Cookies disabled');} 
else 
{ 
    document.cookie = 'name=example; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain='+location.host; 

    if (document.cookie.length==0) {alert('Created AND deleted cookie successfully.');} 
    else {alert('document.cookies.length = '+document.cookies.length);} 
} 
} 
Verwandte Themen