2010-01-27 8 views
222

Ma fonction de création d'un cookie est-elle correcte? Comment supprimer le cookie au début de mon programme? Y a-t-il un codage simple?Comment supprimer un 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 a de bonnes fonctions pour les cookies à https://www.w3schools.com/js/js_cookies.asp. Vous pouvez utiliser 'setCookie ('nom', 'valeur', 0)' pour supprimer un cookie. – Pete

Répondre

76

Voici un bon lien sur 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

Note: 'toGMTString' [a été dépréciée en faveur de' toUTCString'] (https://developer.mozilla.org/en- US/docs/Web/JavaScript/Référence/Global_Objects/date/toGMTString) – drzaus

+1

Note: en cas ne fonctionne pas, assurez-vous que 'path' est correcte. voir: https://developers.google.com/web/tools/chrome-devtools/manage-data/cookies – reversiblean

+0

domaine doit être ajouté. –

260

Essayez ceci:

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"; 
    } 
} 

Ou:

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

comment puis-je définir une fonction et vérifier ce qui est mes cookies et si elle expire encore? – kennedy

+0

@Kennedy réponse jason pourrait être utile –

+0

je pensais avoir une fonction pour voir mon cookie d'abord .. avez-vous un codage pour cela? Je veux le voir quand chaque fois que je visite la page Web, il apparaît automatiquement une alerte pour cela. – kennedy

13

Vous pouvez le faire en fixant la date d'expiration hier.

Réglage à « -1 » ne fonctionne pas. Cela marque un cookie en tant que Sessioncookie.

+0

oui, c'est ce que je vois. – chovy

+0

votre exemple ne fonctionne pas si vous définissez cookie sur une autre page et essayez de le supprimer d'une page différente. l'ensemble fonctionne, mais ne peut pas le supprimer. – chovy

+2

J'ai fini par utiliser ceci: https://github.com/carhartl/jquery-cookie Et vous devez supprimer en utilisant le chemin: '/' – chovy

18

serait ce travail?

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

Je sais que Max-Age cause le cookie d'être un cookie de session dans IE lors de la création du cookie. Vous ne savez pas comment cela fonctionne lors de la suppression des cookies.

+1

Cela fonctionne parfaitement dans Chrome –

7

Voici une implémentation d'une fonction delete cookie avec le soutien unicode de 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"); 

Si vous utilisez AngularJS, essayez $cookies.remove (en dessous utilise un approach similaire):

$cookies.remove('cookieName'); 
4

Pour supprimer un cookie je le repositionne avec une valeur vide et expire dans 1 seconde. Dans les détails, j'utilise toujours l'une des saveurs suivantes (j'ai tendance à préférer le second):

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); 
    } 

Utilisation:

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}); 
    } 

Utilisation:

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

J'ai eu du mal à supprimer un cookie fait via JavaScript et après avoir ajouté l'hôte, il a travaillé. Après avoir supprimé les cookies sur un domaine essayez ce qui suit pour voir les résultats:

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);} 
} 
} 
Questions connexes