2017-02-19 73 views
0

我前一段时间写了一个使用mootools删除cookie的函数。哪个效果很好。我现在试图让它在使用js-cookie库的jQuery中工作。 我一直试图让这个到现在约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

任何理由不只是谷歌'jquery删除所有cookie'并复制/粘贴给定的解决方案之一?或'javascript删除所有cookie'。如果你想为学习目的而这样做,这首先需要进行基本的调试 - 你可以尝试追踪哪里出错?什么'cookies.length'返回?等我 –

+0

我放在跟踪。 cookies.length的长度是2,我还在调用remove函数时使用了一个控制台.log来检查它是否被调用。所以我检查了我有正确的两个cookie名称,并且删除函数被调用两次。至于谷歌的想法,我GOOGLE了它,并试图让我的代码是这样的代码。 – user1616338

回答

0

饼干有没有相同的不适用我但不同的属性?该规范没有为此定义行为,因此它是未定义的行为,并且每个浏览器都可以实现它们自己的行为。应避免创建两个具有相同名称但属性不同的cookie,以防止出现如此惊人的结果。

此外,您的代码使用Cookies.remove(name, null)。 js-cookie中没有这样的API,与latest version一样,您应该使用Cookies.remove(name, attributes)Cookies.remove(name)

您使用document.cookie获取cookie。没有必要这样做。您只能使用Cookies.get(name)