JavaScript写的Cookie类

来源:互联网 发布:cf审判无影腿编程 编辑:程序博客网 时间:2024/04/30 00:14
  1<script language="JScript"> 
  2function Cookie(delim){ 
  3    this._Cookie=[]; 
  4    this.Load=function(){ 
  5        if(document.cookie.indexOf(";")!=-1){ 
  6            var _sp,_name,_tp,_tars,_tarslength; 
  7            var _item=document.cookie.split(""); 
  8            var _itemlength=_item.length; 
  9            while(_itemlength>0){ 
 10                _sp=_item[--_itemlength].split("="); 
 11                _name=_sp[0]; 
 12                _tp=_sp[1].split(","); 
 13                _tars=_tp.slice(1,_tp.length); 
 14                this._Cookie[_name]=[]; 
 15                this._Cookie[_name]=_tars; 
 16                this._Cookie[_name]["timeout"]=_tp[0]; 
 17                } 
 18            return true
 19            } 
 20        return false
 21        } 
 22    this.Save=function(){ 
 23        var _str,_ars,_mars,_marslength,timeout,i,key; 
 24        for(key in this._Cookie){ 
 25            if(!this._Cookie[key])return
 26            _str=[]; 
 27            _mars=CookieClass._Cookie[key]; 
 28            _marslength=_mars.length; 
 29            for(i=0;i<_marslength;i++)_str[_str.length]=escape(_mars[i]); 
 30            document.cookie=key+"="+_mars["timeout"]+(_str.length>0?",":"")+_str+(_mars["timeout"]==0?"":";expires="+new Date(parseInt(_mars["timeout"])).toGMTString()); 
 31            } 
 32         
 33        } 
 34    this.GetCookieCount=function(){ 
 35        var _length=0,key; 
 36        for(key in this._Cookie)_length++
 37        return _length; 
 38        } 
 39    this.Create=function(name,days){ 
 40        days=days?days:0
 41        if(!this._Cookie[name])this._Cookie[name]=[]; 
 42        this._Cookie[name]["timeout"]=days!=0?new Date().getTime()+parseInt(days)*86400000:0
 43        } 
 44    this.Modify=function(name,days){ 
 45        this.Create(name,days); 
 46        } 
 47    this.GetTime=function(name){ 
 48        return new Date(parseInt(this._Cookie[name]["timeout"])); 
 49        } 
 50    this.Delete=function(name){ 
 51        this.Create(name,0); 
 52        } 
 53    this.AddItem=function(name,value){ 
 54        this._Cookie[name][this._Cookie[name].length]=value; 
 55        } 
 56    this.DelItem=function(name,index){ 
 57        var _ttime=this._Cookie[name]["timeout"]; 
 58        this._Cookie[name]=this._Cookie[name].slice(0,index).concat(this._Cookie[name].slice(parseInt(index)+1,this._Cookie[name].length)); 
 59        this._Cookie[name]["timeout"]=_ttime; 
 60        } 
 61    this.GetCount=function(name){ 
 62        return this._Cookie[name].length; 
 63        } 
 64    this.GetItem=function(name,index){ 
 65        return this._Cookie[name][index]; 
 66        } 
 67    } 
 68</script> 
 69<script language="JScript"> 
 70var CookieClass=new Cookie(); 
 71if(!CookieClass.Load()){ 
 72    CookieClass.Create("Pass",1); 
 73    CookieClass.AddItem("Pass","Ps1"); 
 74    CookieClass.AddItem("Pass","Ps2"); 
 75    CookieClass.AddItem("Pass","Ps3"); 
 76    CookieClass.AddItem("Pass","Ps4"); 
 77    CookieClass.DelItem("Pass",1); 
 78    CookieClass.Save(); 
 79    } 
 80alert("Cookie过期时间:"+CookieClass.GetTime("Pass").toLocaleString()); 
 81alert(document.cookie); 
 82</script> 
 83    <script> 
 84function eyunCookie() 
 85  {this.key="";//初始化key。 
 86   this.value="";//初始化key's value。 
 87   this.expires=0;//初始化cookie的有效时间,单位毫秒。 
 88     this.init=function()//对象初始化 
 89                 {this.key=""
 90                this.value=""
 91                this.expires=0
 92                              } 
 93   this.set=function(key,value,expires)//设置cookie 
 94              {if(this.key=="")this.key=key; 
 95                             if(this.value=="")this.value=value; 
 96                             if(this.expires<=0)this.expires=expires; 
 97                             if(this.key==""||typeof(this.key)!="string"
 98                 {alert("请先设置欲保存的cookie名称!"); 
 99                                  this.init(); 
100                  return false
101                 } 
102               if(this.key.match(/[,; ]/)) 
103                 {alert("cookie名称中不能包含“,”、“;”或空格!"); 
104                                  this.init(); 
105                  return false
106                 } 
107               if(this.value.toString().match(/[,; ]/)||typeof(this.value)=="undefined"
108                 {alert("cookie值中不能包含“,”、“;”或空格!"); 
109                                  this.init(); 
110                  return false
111                 } 
112               if(this.expires<=0||typeof(this.expires)!="number"
113                 {alert("请先正确设置cookie的有效时间!"); 
114                                  this.init(); 
115                  return false
116                 } 
117               var cookie=document.cookie; 
118               if(cookie.indexOf(this.key+"=")!=-1
119                 {if(!confirm("欲保存的cookie名称已经存在,是否要进行替换?")) 
120                                    {this.init(); 
121                                         return false
122                                        }                     
123                 } 
124               var dt=new Date(); 
125               dt.setTime(dt.getTime()+this.expires); 
126                             document.cookie=this.key+"="+this.value+";expires="+dt.toGMTString(); 
127                             this.init(); 
128               return true
129              } 
130   this.get=function(key)//取得名为key的cookie的值 
131              {if(key==""||key.match(/[,; ]/)) 
132                 {alert("请正确设置欲查找的cookie名称!"
133                  return false
134                 } 
135               var cookie=document.cookie; 
136               var start=cookie.indexOf(key+"="); 
137               if(start==-1
138                 {alert("欲查找的cookie不存在!"
139                  return false
140                 } 
141               var end=cookie.indexOf(";",start); 
142                             if(end==-1
143                               end=cookie.length; 
144               var getCookie=cookie.substring(start+key.length+1,end); 
145               alert("cookie:"+key+"的值为"+getCookie); 
146               return getCookie; 
147              } 
148   this.showAll=function(){alert("共有以下cookie对:/n"+document.cookie.split(";").toString().replace(/,/g,"/n"));}//显示所有cookie 
149   this.del=function(key)//删除名为key的cookie 
150              {if(key==""||key.match(/[,; ]/)) 
151                 {alert("请正确设置欲删除的cookie名称!"
152                  return false
153                 } 
154                             var dt=new Date(); 
155               dt.setTime(dt.getTime()); 
156                             document.cookie=key+"=eyunDelete;expires="+dt.toGMTString(); 
157                             this.init(); 
158               return true
159              } 
160   this.destroy=function()//销毁所有cookie 
161                    {var dt=new Date(); 
162                   dt.setTime(dt.getTime()); 
163                                     while(document.cookie!=""
164                                       document.cookie=document.cookie+";expires="+dt.toGMTString(); 
165                                     this.init(); 
166                                     return true 
167                                    } 
168  } 
169var cookieTest=new eyunCookie() 
170function settest() 
171{cookieTest.key="test" 
172 cookieTest.value="ok" 
173 cookieTest.expires=31536000000 
174 cookieTest.set() 
175
176</script> 
177<input type=button onclick=cookieTest.showAll() value=read><input type=button onclick="cookieTest.set('a','test',31536000000)" value=setA><input type=button onclick="settest();" value=setTest><input type=button onclick="cookieTest.destroy()" value=clear><input type=button onclick=cookieTest.get("test") value=gettest><input type=button onclick=cookieTest.get("a") value=geta><input type=button onclick=cookieTest.set("test",1,31536000000) value=resetTest><input type=button onclick=cookieTest.del("test") value=delTest> 
原创粉丝点击