赞
踩
Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie来覆盖原来Cookie。
将maxAge设置为0,覆盖原来的Cookie属性值。注意是0而不是负数。负数代表其他的意义。
注意:只需判断cookie的name是否匹配就能验证cookie是否存在了。如果要更新cookie,除了设置相同的名字外,还要设置相同的域和path名,因为拿到的cookie只有name 和 value,如果不设置域和path值,则会默认当前路径和域,存另外一份Cookie。(而我们下面的解决办法中,因为本来setCookie没有设置域和path,所以更新时并不需要重新设置,都采用默认当前路径和域)
max-age:如果设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效;如果设置为0,则立即删除该Cookie。
expiress:设置为当前时间之前的时间,即可立即删除该cookie
cookie结构:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。
我们用循环每个cookie设置expiress属性来删除(设置maxAge也可以):
- // js 遍历所有Cookie
- function foreach()
- {
- var strCookie=document.cookie;
- var arrCookie=strCookie.split("; "); // 将多cookie切割为多个名/值对
- for(var i=0;i <arrCookie.length;i++)
- { // 遍历cookie数组,处理每个cookie对
- var arr=arrCookie[i].split("=");
- if(arr.length>0)
- DelCookie(arr[0]);
- }
- }
-
- function GetCooki(offset)
- {
- var endstr = document.cookie.indexOf (";", offset);
- if (endstr == -1)
- endstr = document.cookie.length;
- return decodeURIComponent(document.cookie.substring(offset, endstr));
- }
-
- function DelCookie(name)
- {
- var exp = new Date();
- exp.setTime (exp.getTime() - 1);
- var cval = GetCookie (name);
- document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
- }
-
- function GetCookie(name)
- {
- var arg = name + "=";
- var alen = arg.length;
- var clen = document.cookie.length;
- var i = 0;
- while (i < clen)
- {
- var j = i + alen;
- if (document.cookie.substring(i, j) == arg)
- return GetCooki (j);
- i = document.cookie.indexOf(" ", i) + 1;
- if (i == 0) break;
- }
- return null;
- }
- foreach();
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。