2010-01-27 4 views
222

Является ли моя функция создания файла cookie правильной? Как удалить файл cookie в начале моей программы? есть ли простая кодировка?Как удалить 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 имеет хорошие функции для файлов cookie на https://www.w3schools.com/js/js_cookies.asp. Вы можете использовать 'setCookie ('name', 'value', 0)' для удаления cookie. – Pete

ответ

76

Вот хорошая ссылка на 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

примечание: 'toGMTString' [устарела в пользу' toUTCString'] (https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTString) – drzaus

+1

примечание: в случае неработоспособности убедитесь, что 'путь' правильный. см. https://developers.google.com/web/tools/chrome-devtools/manage-data/cookies – reversiblean

+0

домен должен быть добавлен. –

260

Попробуйте это:

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

Или:

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

Как установить функцию, которая и проверить, что такое мои файлы cookie и истекает ли она? – kennedy

+0

Ответ на вопрос Кеннеди Джейсона может быть полезен –

+0

Я думал о том, что у меня есть функция для просмотра моего файла cookie. У вас есть какое-то кодирование? я хочу видеть это, когда каждый раз, когда я посещаю веб-страницу, он автоматически выдает предупреждение для него. – kennedy

13

Вы можете сделать это, установив дату истечения вчера.

Установка его в положение «-1» не работает. Это означает, что cookie является Sessioncookie.

+0

Да, это то, что я вижу. – chovy

+0

ваш пример не работает, если вы установите cookie на другой странице и попытаетесь удалить его с другой страницы. набор работает, но не может его удалить. – chovy

+2

Я закончил использовать это: https://github.com/carhartl/jquery-cookie И вам нужно удалить с помощью пути: '/' – chovy

18

будет ли это работать?

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

Я знаю Max-Age вызывает куки быть куки сессии в IE при создании печенья. Не знаю, как это работает при удалении файлов cookie.

+1

Это прекрасно работает в Chrome –

7

Вот реализация delete cookie функции с поддержкой юникода от 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"); 

Если вы используете AngularJs, попробуйте $cookies.remove (под ней используется аналогичный approach):

$cookies.remove('cookieName'); 
4

Для удаления cookie, я снова установил его с пустым значением и истекал через 1 секунду. В деталях, я всегда использовать один из следующих вкусов (Я предпочитаю второе):

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

Использование:

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

Использование:

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

У меня была проблема удаляемый печенье, сделанное с помощью JavaScript и после того, как я добавил хозяин он работал. После удаления куки на домене попробовать следующее, чтобы увидеть результаты:

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