javaScript 操作COOKIE【转自qiqiboy】

1 篇文章 0 订阅

最近用到了在前端需要使用javascript对cookie进行操作,本来想找个现成的代码来用,无奈搜了半天没有找到。

于是自己写了个,也随手分享出来,凑个博客更新。。。。。

   1: var COOKIE=(function(){
   2:     var cookie=document.cookie||'',
   3:         subs=cookie.split(';'),
   4:         cks={},
   5:         trim=function(str){
   6:             return str.replace(/^\s+|\s+$/g,'');
   7:         },
   8:         getDateString=function(offset){
   9:             var date=new Date();
  10:             date.setTime(+date+offset*1000);
  11:             return date.toGMTString();
  12:         }
  13:     for(var i=0;i<subs.length;i++){
  14:         var _sub=subs[i];
  15:         var pos=_sub.indexOf("=");
  16:         var key,value;
  17:         if(pos>=0){
  18:             key=trim(_sub.substring(0,pos));
  19:             value=_sub.substring(pos+1);
  20:             cks[unescape(key)]=unescape(value);
  21:         }
  22:     }
  23:  
  24:     return {
  25:         has:function(key){
  26:             return typeof cks[key]!='undefined';
  27:         },
  28:         set:function(key,value,expire,path,domain){
  29:             cks[key]=value;
  30:             var myck=escape(key)+'='+escape(value);
  31:             if(typeof expire!='undefined')
  32:                 myck+=';expires='+getDateString(expire);
  33:             if(typeof path!='undefined')
  34:                 myck+=';path='+path;
  35:             if(typeof domain!='undefined')
  36:                 myck+=';domain='+domain;
  37:             document.cookie=myck;
  38:         },
  39:         remove:function(key){
  40:             delete cks[key];
  41:             document.cookie=escape(key)+'=;path=/;expires='+getDateString(-10000);
  42:         },
  43:         get:function(key){
  44:             return cks[key];
  45:         },
  46:         cookies:cks
  47:     }
  48: })();

u=812244014,624370422&fm=52&gp=0相对于javascript,通过后端的php来操作cookie是更容易简单的。所以由于以前很少通过JS去操作cookie,在使用javascript操作cookie时遇到了一些弯路,也分享出来,免得大家跟我犯同样的错误。

第一点,就是我知道document.cookie返回所有cookie组成的字符串,所以在设置cookie时,我想当然的以为是将新cookie拼接到该字符串上,再赋值给document.cookie就行了。

经过测试,完全不是这样,document.cookie=””; 是添加或更新新的cookie,比如document.cookie=”myck=yes;”则添加了个名字为myck的cookie;如果要同时添加多个cookie,document.cookie=”key1=1;key2=2;“ 就行了。如果要加上过期时间,存储域等信息,直接后面加上相关参数即可。比如:document.cookie=’myck=yes; expires=expire_time;domain=domain’。

该操作完全不影响已有的非同名cookie。

第二点,设置cookie的过期时间时,我错误的以为是设置个时间戳就行了,结果测来测去,发现没有效,cookie有效期总是session周期。后来才发现要用标准字符串时间格式,类似”Mon Jul 23 2012 20:08:10 GMT+0800 GMT“。如果用1343045321299这种,则是无效的。

。。。。。。。额。。没了。。。

如何使用?

   1: //检测是否存在名字为abc的cookie
   2: COOKIE.has('abc');
   3:  
   4: //获取名字为abc的cookie的值
   5: COOKIE.get('abc');
   6:  
   7: //添加一个新cookie
   8: COOKIE.set('abc','123');
   9: COOKIE.set('abc','123',7*24*3600);//带过期时间的,单位是秒
  10:  
  11: //移除名字为abc的cookie
  12: COOKIE.remove('abc');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值