2010-01-27 26 views
222

Czy moja funkcja tworzenia pliku cookie jest poprawna? Jak usunąć plik cookie na początku mojego programu? czy istnieje proste kodowanie?Jak usunąć plik 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 ma dobre funkcje do ciasteczek na stronie https://www.w3schools.com/js/js_cookies.asp. Możesz użyć 'setCookie ('name', 'value', 0)', aby usunąć plik cookie. – Pete

Odpowiedz

76

Tutaj dobry związek na 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

uwaga: 'toGMTString' [została zastąpiona' toUTCString'] (https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTString) – drzaus

+1

uwaga: jeśli nie działa, upewnij się, że 'ścieżka' jest poprawna. zobacz: https://developers.google.com/web/tools/chrome-devtools/manage-data/cookies – reversiblean

+0

należy dodać domenę. –

260

Spróbuj tego:

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

czyli

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

Jak ustawić funkcję i sprawdzić, jakie są moje pliki cookie i czy wygasają jeszcze? – kennedy

+0

@Kennedy odpowiedź jason może być przydatna –

+0

myślałem, że mam funkcję, aby najpierw wyświetlić mój plik cookie. Czy masz jakieś kodowanie? Chcę to zobaczyć, kiedy za każdym razem odwiedzam stronę internetową, automatycznie wyskakuje na nią alert. – kennedy

13

Można to zrobić poprzez ustawienie daty wygaśnięcia do wczoraj.

Ustawienie na "-1" nie działa. To oznacza ciasteczko jako Sessioncookie.

+0

tak, właśnie to widzę. – chovy

+0

Twój przykład nie działa, jeśli ustawisz plik cookie na innej stronie i spróbujesz go usunąć z innej strony. zestaw działa, ale nie może go usunąć. – chovy

+2

Skończyło się na tym: https://github.com/carhartl/jquery-cookie I musisz usunąć za pomocą ścieżki: '/' – chovy

18

czy to działa?

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

wiem Max-Age powoduje cookie być cookie sesji w IE podczas tworzenia cookie. Nie wiesz, jak to działa podczas usuwania plików cookie.

+1

To działa idealnie w Chrome –

7

Oto realizacja delete cookie funkcji z obsługą Unicode od Mozilli:

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

Jeśli używasz angularjs, spróbuj $cookies.remove (pod wykorzystuje podobną approach):

$cookies.remove('cookieName'); 
4

Aby usunąć ciasteczko, które ustawiłem ponownie z pustą wartością i wygasa w 1 sekundę. Szczegółowo, zawsze zastosować jedną z następujących odmianach (I zazwyczaj wolą drugi):

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

Zastosowanie:

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

Zastosowanie:

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

miałem problemy Usuwanie ciastko wykonana poprzez JavaScript i po dodaniu hosta to działało. Po usunięciu plików cookie w domenie wypróbować następujące zobaczyć wyniki:

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