JavaScript操作Cookie

js 代码
  1. <script>   
  2. function setCookie(name,value)   
  3. {   
  4.  var Days = 30; //此 cookie 将被保存 30 天   
  5.  var exp = new Date(); //new Date("December 31, 9998");   
  6.  exp.setTime(exp.getTime() + Days*24*60*60*1000);   
  7.  document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();   
  8. }   
  9. function getCookie(name)   
  10. {   
  11.  var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));   
  12.  if(arr != nullreturn unescape(arr[2]); return null;   
  13. }   
  14. function delCookie(name)   
  15. {   
  16.  var exp = new Date();   
  17.  exp.setTime(exp.getTime() - 1);   
  18.  var cval=getCookie(name);   
  19.  if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();   
  20. }   
  21.   
  22. setCookie("aaa","呵呵");   
  23. alert(getCookie('aaa'));   
  24. </script>   

 

Cookie类

 

js 代码
  1. <script language="JScript">   
  2. function Cookie(delim){//操作Cookie类   
  3.   Array.prototype.splice=function(){   
  4.     var len=arguments.length,tarray=[],i=arguments[0]+arguments[1];   
  5.     if(len>1){   
  6.       while(i<this.length)tarray[tarray.length]=this[i++];   
  7.       this.length=arguments[0];   
  8.       if(len>2)for(var i=2;i<len;i++)this[this.length]=arguments[i];   
  9.       var tlen=tarray.length,i=0;   
  10.       while(i<tlen)this[this.length]=tarray[i++];   
  11.       }   
  12.     return this;   
  13.     }   
  14.   this._Cookie=[];   
  15.   this.Load=function(){   
  16.     if(document.cookie.indexOf(";")!=-1){   
  17.       var _sp,_name,_tp,_tars,_tarslength;   
  18.       var _item=document.cookie.split("; ");   
  19.       var _itemlength=_item.length;   
  20.       while(_itemlength>0){   
  21.         _sp=_item[--_itemlength].split("=");   
  22.         _name=_sp[0];   
  23.         _tp=_sp[1].split(",");   
  24.         _tars=_tp.slice(1,_tp.length);   
  25.         this._Cookie[_name]=[];   
  26.         this._Cookie[_name]=_tars;   
  27.         this._Cookie[_name]["timeout"]=_tp[0];   
  28.         }   
  29.       return true;   
  30.       }   
  31.     return false;   
  32.     }   
  33.   this.Save=function(){   
  34.     var _str,_ars,_mars,_marslength,timeout,i,key;   
  35.     for(key in this._Cookie){   
  36.       if(!this._Cookie[key])return;   
  37.       _str=[];   
  38.       _mars=CookieClass._Cookie[key];   
  39.       _marslength=_mars.length;   
  40.       for(i=0;i<_marslength;i++)_str[_str.length]=escape(_mars[i]);   
  41.       document.cookie=key+"="+_mars["timeout"]+(_str.length>0?",":"")+_str+";expires="+new Date(parseInt(_mars["timeout"])).toGMTString();   
  42.       }   
  43.        
  44.     }   
  45.   this.GetCookieCount=function(){   
  46.     var _length=0,key;   
  47.     for(key in this._Cookie)_length++;   
  48.     return _length;   
  49.     }   
  50.   this.Create=function(name,days){   
  51.     this._Cookie[name]=[];   
  52.     this._Cookie[name]["timeout"]=new Date().getTime()+days*86400000;   
  53.     }   
  54.   this.Modify=function(name,days){   
  55.     this.Create(name,days);   
  56.     }   
  57.   this.Delete=function(name){   
  58.     this.Create(name,0);   
  59.     }   
  60.   this.AddItem=function(name,value){   
  61.     this._Cookie[name][this._Cookie[name].length]=value;   
  62.     }   
  63.   this.DelItem=function(name,index){   
  64.     this._Cookie[name].splice(index,1);   
  65.     }   
  66.   this.GetCount=function(name){   
  67.     return this._Cookie[name].length;   
  68.     }   
  69.   this.GetItem=function(name,index){   
  70.     return this._Cookie[name][index];   
  71.     }   
  72.   }   
  73. </script>   
  74. <script language="JScript">   
  75. /*  
  76. ====================================  
  77. Design :Flashsoft  
  78. ====================================  
  79. 浏览器能够通过Cookies保留有关数据。象Windows的注册表一样,用户不必知道Cookies的具体位置,浏览器能找到这些数据。第六代的浏览器,不管是IE还是NS都支持document.cookie属性。通过这个属性来读取或修改Cookies的值。不过Cookies的存储形式是非结构化的长字符串,需要经过相应的解析后才有意义。  
  80.  
  81. Cookies的表达如下,除了name=value以外,其它均为可选:  
  82. name=value;   
  83. expires=date;  
  84. domain=domainname  
  85. path=pathname;  
  86. secure;  
  87.  
  88. 例如:  
  89. User=HockeyDude; expires=Thu,01-Jan-70 00:00:01 GMT; domain=www.mydomain.com; path=/images; secure;  
  90. Pass=Gretzky; expires=Thu,01-Jan-70 00:00:01 GMT; domain=www.mydomain.com; path=/images; secure;  
  91.  
  92. 这么长的两个字符串只代表了两个Cookies。如果还要再加上电子信箱或其他信息就还得加长字符串。通常都是通过分解这样的字符串来取得各个变量或元素的。这实在是费时费力的事。  
  93.  
  94. 我使用面向对象设计(Object Oriented Design,OOD)的思路来编写Cookies处理函数,其特点如下:  
  95.  
  96. 便于增删子项。这是很重要的,有些浏览器限制Cookies的使用数量。  
  97. 通过修改函数可以容易地修改时效数据。通常的做法很麻烦,要拷贝Cookies,删除原Cookies,修改并重写Cookies。  
  98. Cookies和它的子项存放在数组里。可以根据需要快速而有效地进行修改。这样也无须解析那长长的字符串。  
  99.  
  100. Cookies对象的使用  
  101. 以下是对象的公有方法:  
  102.  
  103. 方括号[]内是可选参数  
  104. //构造  
  105. Cookie([定界符,缺省为句点]) - 构造函数  
  106.  
  107. //初始化  
  108. GetCookieCount() - 返回Cookies数量  
  109. Create(name, days) - 创建Cookies及其时效天数  
  110. Modify(name, days) - 修改Cookies的时效天数  
  111. Delete(name) - 删除Cookies及其子项  
  112. GetCount(name) - 返回Cookies的子项数量  
  113. AddItem(name,value) - 增加一个子项  
  114. GetItem(name,index) - 返回指定索引的子项  
  115. DelItem(name,index) - 删除指定的子项  
  116.  
  117. //存取  
  118. Load() - 读取Cookies  
  119. Save() - 存储Cookies  
  120.  
  121. 下面是应用实例:  
  122. */  
  123. var CookieClass=new Cookie();   
  124. if(!CookieClass.Load()){   
  125.   CookieClass.Create("Pass",1);   
  126.   CookieClass.Create("User",1);   
  127.   CookieClass.AddItem("Pass","Ps1");   
  128.   CookieClass.AddItem("Pass","Ps2");   
  129.   CookieClass.AddItem("Pass","Ps3");   
  130.   CookieClass.AddItem("Pass","Ps4");   
  131.   CookieClass.AddItem("Pass","Ps5");   
  132.   CookieClass.AddItem("Pass","Ps6");   
  133.   CookieClass.DelItem("Pass",1);   
  134.   CookieClass.Save();   
  135.   }   
  136. alert(document.cookie);   
  137. </script>   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值