js操作cookie

来源:互联网 发布:流媒体直播软件 编辑:程序博客网 时间:2024/05/20 18:17

一.js获取cookies

var cookiesStr = document.cookie;

cookiesStr为所有cookie组成的字符串,形如:name=ceshi;sex=1;.....    不同cookie以‘;’相连接。
因此如果想要获取某一个cookie的值,就只能用处理字符串的方法了,比较流行的做法:先split,而后indexOf,
function getCookie(key) {      var cookiesStr = document.cookie;      var cookiesArr = cookiesStr.split(';');      for(var i=0;i<cookiesArr.length;i++){           if(cookiesArr[i].indexOf(key)>=0){              var itemArr=cookiesArr[i].split('='); if(itemArr.length>1){                return itemArr[1];              }            }      }return null;}
当然我更推荐用正则表达式
function getCookie(key){var r=new RegExp(key+"=(\\w+);","i");var result=r.exec(document.cookie);if(result!=null&&result.length>1){return result[1];}return null;}

二.js设置cookie


1.简单设置

document.cookie='name=suo';
以上代码,设置了一个key为name,值为suo的cookie,该cookie没有设置过期时间,当浏览器关闭时,自动失效

2.带过期时间

var d=new Date();d.setDate(d.getDate()+1);document.cookie='name=suo;expires='+d.toGMTString();
设置cookie一天后过期

3.带路径

var d=new Date();d.setDate(d.getDate()+1);document.cookie='name=suo;path=/;expires='+d.toGMTString();
设置cookie一天后过期,且在根路径下,不设置路径时,路径默认为当前路径,不设置路径会有一个比较坑的问题,在删除时讲到

三.删除cookie

var d=new Date();d.setDate(d.getDate()-1);document.cookie='name=suo;expires='+d.toGMTString();
当过期时间小于当前时间时,cookie就会被删除,那么问题来了,有时候我们发现,怎么删都删不掉一个cookie,这是为啥呢?因为cookie是先通过path 再通过key来查找的!
也就是说,通过path和cookie的key来唯一标识一个cookie,上面的代码没有写path,那就是当前路径下key为name的cookie要被删除,如果你设name时的路径和当前路径不同,
那就删不掉了,所以推荐在设置cookie时,设置一个path=/











原创粉丝点击