2010-01-27 24 views
222

¿Mi función de crear una cookie es correcta? ¿Cómo borro la cookie al principio de mi programa? hay una codificacion simple?¿Cómo eliminar una 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 tiene buenas funciones para las cookies en https://www.w3schools.com/js/js_cookies.asp. Puede usar 'setCookie ('name', 'value', 0)' para eliminar una cookie. – Pete

Respuesta

76

Aquí un buen enlace en 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

nota: 'toGMTString' [ha sido desaprobado en favor de' toUTCString'] (https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTString) – drzaus

+1

nota: en caso de que no funcione, asegúrese de que 'ruta' sea correcta. consulte: https://developers.google.com/web/tools/chrome-devtools/manage-data/cookies – reversiblean

+0

se debe agregar el dominio. –

260

Prueba esto:

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

O:

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

¿cómo configuro una función que compruebe qué son mis cookies y si ya caduca? – kennedy

+0

@Kennedy La respuesta de jason podría ser útil –

+0

Pensé en tener una función para ver mi cookie primero ... ¿tiene alguna codificación para eso? Quiero verlo cuando cada vez que visito la página web, automáticamente aparece una alerta. – kennedy

13

Usted puede hacer esto mediante el establecimiento de la fecha de expiración de ayer.

Configurarlo en "-1" no funciona. Eso marca una cookie como Sessioncookie.

+0

sí, esto es lo que estoy viendo. – chovy

+0

su ejemplo no funciona si configura cookies en otra página e intenta eliminarlas de una página diferente. el conjunto funciona, pero no puede eliminarlo. – chovy

+2

Terminé usando esto: https://github.com/carhartl/jquery-cookie Y tienes que borrar el uso de la ruta: '/' – chovy

18

¿funcionaría?

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

Max-Age hace que la cookie para ser una cookie de sesión en Internet Explorer cuando se crea la cookie. No estoy seguro de cómo funciona al eliminar las cookies.

+1

Esto funciona perfecto en Chrome –

7

Aquí es una implementación de una función delete cookie con soporte 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 utiliza AngularJS, tratan $cookies.remove (por debajo de ella utiliza un similares approach):

$cookies.remove('cookieName'); 
4

Para eliminar una cookie la configuré nuevamente con un valor vacío y expirando en 1 segundo. En detalles, yo siempre uso uno de los siguientes sabores (que tienden a preferir el segundo):

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

Uso:

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

Uso:

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

que tenía problemas para suprimir una galleta hecha a través de JavaScript y después añadí el anfitrión funcionó. Después de limpiar las cookies en un dominio intente lo siguiente para ver los resultados:

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