2017-02-19 3 views
0

Я написал некоторое время назад функцию удаления файлов cookie с помощью mootools. Это отлично работает. Теперь я пытаюсь заставить его работать в jQuery, используя js-cookie libary. Я пытался получить эту работу в течение 4 часов, и я уже сейчас начал трахать мою голову на столе :(Преобразование Mootools в функцию JQuery Cookies

function deleteAllCookies() { 
console.log('got to delete all cookies'); 
var cookies = document.cookie.split(";"); 
console.log("cookie length"+cookies.length); 
for (var i = 0; i < cookies.length; i++) { 
    var cookie = cookies[i]; 
    var eqPos = cookie.indexOf("="); 
    var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; 
    Cookies.remove(name, null); 
    console.log("name is "+name); 
} 

}

так он находит два печенья и получает (я вызываю эту функцию из события onmousedown для тестирования)

(если я его запускаю, он удаляет один из них (первый).

спасибо

+0

Любая причина не только в Google 'jquery удалять все файлы cookie' и копировать/вставлять одно из решений, предоставленных там? Или 'javascript удалить все файлы cookie'. Если вы хотите сделать это для обучения, это требует базовой отладки в первую очередь - можете ли вы попытаться проследить, что пойдет не так, где? Что возвращает 'cookies.length'? И т.д. –

+0

Я положил в след. cookie.length имеет длину 2, я также добавляю консоль .log в функцию remove, чтобы проверить, что она вызывается. Поэтому я проверил, что у меня есть правильные два имени cookie и что функция remove вызывается дважды. Что касается идеи Google, то я применил ее в googled и пробовал код, что и привело меня к этому коду. – user1616338

ответ

0

Есть ли у печенья то же самое меня, но разных атрибутов? Спецификация не определяет поведение для этого, так что это неопределенное поведение, и каждый браузер может реализовать свои собственные. Следует избегать создания двух файлов cookie с тем же именем, но с разными атрибутами, чтобы предотвратить такой неожиданный результат.

Кроме того, в вашем коде используется Cookies.remove(name, null). В js-cookie такого API нет, поскольку от latest version вы должны использовать Cookies.remove(name, attributes) или просто Cookies.remove(name).

Вы получаете файл cookie с использованием document.cookie. Это не нужно делать. Вы можете использовать только Cookies.get(name).

Смежные вопросы