一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

javascript cookie操作总结

时间:2011-07-29 编辑:简简单单 来源:一聚教程网

同样的Cookie的内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。这也就是为什么我们在例子中设定Cookie的内容为"Test_Content"的原因


 


最后提供一个操作类

//Cookie类
 function Cookie(){
  Cookie.prototype=new Object();//继承自Object
  this.constructor=Cookie;
  //重写toString函数,生成为document.cookie形式的字符串
  Cookie.prototype.toString=function(){
   var data=[];//存放cookie子键
   var _cookie=[];//存放cookie键值对
   for(var prop in this){
    switch(true){
     case prop=="name":
      _cookie[0]=prop;
      continue;
     case prop=="expires":
      _cookie[1]=prop+"="+this[prop];
      continue;
     case prop=="path":
      _cookie[2]=prop+"="+this[prop];
      continue;
     case prop=="secure":
      _cookie[3]=prop+"="+this[prop];
      continue;
     case prop=="domain":
      _cookie[4]=prop+"="+this[prop];
      continue;
    }
    data[data.length]=prop+":"+escape(this[prop]);
   }
   _cookie[0]+="="+data.join("&");
   return _cookie.join(";");
  };
  return this;//返回cookie对象
 } 
 //将字符串格式化为cookie, 静态函数
 Cookie.format=function(str){
  var cookie=new Cookie();
  var start=str.indexOf("=");
  cookie.name=str.substring(0,start);
  var value=str.substring(start+1);
  value=value.split('&');
  for ( var v in value ){
   v=v.split(':');
   this[v[0]]=unescape(v[1]);
  }
  return cookie;
 };
 //获取当前所有cookie, 静态对象
 Cookie.cookies=(function(){
  var cookie=document.cookie;
  var obj;
  cookie=cookie.split(';');
  for (var c in cookie){
   c=Cookie.format(c);
   obj[c.name]=c;
  }
  return obj;
 })();
 //添加cookie, 静态函数
 Cookie.Add=function(cookie){
  if(cookie instanceof Cookie){
   document.cookie=cookie.toString();
  }
  //else console.log("参数错误");
 }
 //删除cookie, 静态函数
 Cookie.Remove=function(cookie){
  if(cookie instanceof Cookie){
   var time=new Data();
   time.setFullYear(time.getFullYear()-10);
   cookie.expires=time.toGMTString();
   document.cookie=cookie.toString();
  }
 }

热门栏目