2010-01-27 69 views
222

Chức năng tạo cookie của tôi có đúng không? Làm cách nào để xóa cookie khi bắt đầu chương trình của tôi? là có một mã hóa đơn giản?Làm cách nào để xóa 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 có chức năng tốt cho cookie tại https://www.w3schools.com/js/js_cookies.asp. Bạn có thể sử dụng 'setCookie ('name', 'value', 0)' để xóa cookie. – Pete

Trả lời

76

Dưới đây là một liên kết tốt về 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

lưu ý: 'toGMTString' [đã bị phản đối ủng hộ của' toUTCString'] (https://developer.mozilla.org/en- US/docs/Web/JavaScript/Tham chiếu/Global_Objects/Date/toGMTString) – drzaus

+1

lưu ý: trong trường hợp không hoạt động, đảm bảo 'đường dẫn' là chính xác. xem: https://developers.google.com/web/tools/chrome-devtools/manage-data/cookies – reversiblean

+0

tên miền sẽ được thêm vào. –

260

Hãy thử điều này:

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

Hoặc:

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

làm cách nào để tôi đặt chức năng và kiểm tra cookie của tôi là gì và liệu nó có hết hạn chưa? – kennedy

+0

@Kennedy jason của câu trả lời có thể hữu ích –

+0

tôi nghĩ rằng có một chức năng để xem cookie của tôi đầu tiên .. bạn có bất kỳ mã hóa cho điều đó? tôi muốn nhìn thấy nó mỗi khi tôi truy cập vào trang web, nó sẽ tự động bật lên một cảnh báo cho nó. – kennedy

13

Bạn có thể làm điều này bằng cách thiết lập ngày hết hạn với hôm qua.

Đặt thành "-1" không hoạt động. Điều đó đánh dấu một cookie là một Sessioncookie.

+0

vâng, đây là những gì tôi thấy. – chovy

+0

ví dụ của bạn không hoạt động nếu bạn đặt cookie trên một trang khác và cố gắng xóa nó khỏi một trang khác. bộ này hoạt động nhưng không thể xóa nó. – chovy

+2

Tôi đã kết thúc bằng cách sử dụng này: https://github.com/carhartl/jquery-cookie Và bạn phải xóa bằng cách sử dụng đường dẫn: '/' – chovy

18

có hoạt động không?

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

Tôi biết Max-Age khiến cookie trở thành cookie phiên trong IE khi tạo cookie. Bạn không chắc chắn cách hoạt động khi xóa cookie.

+1

Công trình này hoàn hảo trong Chrome –

7

Đây là một thực hiện một chức năng delete cookie với sự hỗ trợ unicode từ 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"); 

Nếu bạn sử dụng AngularJs, hãy thử $cookies.remove (bên dưới nó sử dụng một giống approach):

$cookies.remove('cookieName'); 
4

Để xóa một cookie tôi đặt lại với giá trị trống và hết hạn sau 1 giây. Cụ thể, tôi luôn luôn sử dụng một trong những hương vị sau đây (tôi có xu hướng thích cái thứ hai):

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

Cách sử dụng:

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

Cách sử dụng:

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

Tôi gặp sự cố khi xóa cookie được thực hiện qua JavaScript và sau khi tôi thêm máy chủ lưu trữ hoạt động. Sau khi xóa cookie trên một tên miền thử những điều sau đây để xem kết quả:

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);} 
} 
} 
Các vấn đề liên quan