TomSun

享受编程的快乐!Attitude is everything!

导航

JS写的Cookie类

Posted on 2005-08-06 21:02  TomSun  阅读(575)  评论(0编辑  收藏  举报
<script language="JScript"> 
function Cookie(delim){ 
    
this._Cookie=[]; 
    
this.Load=function(){ 
        
if(document.cookie.indexOf(";")!=-1){ 
            
var _sp,_name,_tp,_tars,_tarslength; 
            
var _item=document.cookie.split(""); 
            
var _itemlength=_item.length; 
            
while(_itemlength>0){ 
                _sp
=_item[--_itemlength].split("="); 
                _name
=_sp[0]; 
                _tp
=_sp[1].split(","); 
                _tars
=_tp.slice(1,_tp.length); 
                
this._Cookie[_name]=[]; 
                
this._Cookie[_name]=_tars; 
                
this._Cookie[_name]["timeout"]=_tp[0]; 
                } 
            
return true
            } 
        
return false
        } 
    
this.Save=function(){ 
        
var _str,_ars,_mars,_marslength,timeout,i,key; 
        
for(key in this._Cookie){ 
            
if(!this._Cookie[key])return
            _str
=[]; 
            _mars
=CookieClass._Cookie[key]; 
            _marslength
=_mars.length; 
            
for(i=0;i<_marslength;i++)_str[_str.length]=escape(_mars[i]); 
            document.cookie
=key+"="+_mars["timeout"]+(_str.length>0?",":"")+_str+(_mars["timeout"]==0?"":";expires="+new Date(parseInt(_mars["timeout"])).toGMTString()); 
            } 
         
        } 
    
this.GetCookieCount=function(){ 
        
var _length=0,key; 
        
for(key in this._Cookie)_length++
        
return _length; 
        } 
    
this.Create=function(name,days){ 
        days
=days?days:0
        
if(!this._Cookie[name])this._Cookie[name]=[]; 
        
this._Cookie[name]["timeout"]=days!=0?new Date().getTime()+parseInt(days)*86400000:0
        } 
    
this.Modify=function(name,days){ 
        
this.Create(name,days); 
        } 
    
this.GetTime=function(name){ 
        
return new Date(parseInt(this._Cookie[name]["timeout"])); 
        } 
    
this.Delete=function(name){ 
        
this.Create(name,0); 
        } 
    
this.AddItem=function(name,value){ 
        
this._Cookie[name][this._Cookie[name].length]=value; 
        } 
    
this.DelItem=function(name,index){ 
        
var _ttime=this._Cookie[name]["timeout"]; 
        
this._Cookie[name]=this._Cookie[name].slice(0,index).concat(this._Cookie[name].slice(parseInt(index)+1,this._Cookie[name].length)); 
        
this._Cookie[name]["timeout"]=_ttime; 
        } 
    
this.GetCount=function(name){ 
        
return this._Cookie[name].length; 
        } 
    
this.GetItem=function(name,index){ 
        
return this._Cookie[name][index]; 
        } 
    } 
</script> 
<script language="JScript"> 
var CookieClass=new Cookie(); 
if(!CookieClass.Load()){ 
    CookieClass.Create(
"Pass",1); 
    CookieClass.AddItem(
"Pass","Ps1"); 
    CookieClass.AddItem(
"Pass","Ps2"); 
    CookieClass.AddItem(
"Pass","Ps3"); 
    CookieClass.AddItem(
"Pass","Ps4"); 
    CookieClass.DelItem(
"Pass",1); 
    CookieClass.Save(); 
    } 
alert(
"Cookie过期时间:"+CookieClass.GetTime("Pass").toLocaleString()); 
alert(document.cookie); 
</script> 
    
<script> 
function eyunCookie() 
  {
this.key="";//初始化key。 
   this.value="";//初始化key's value。 
   this.expires=0;//初始化cookie的有效时间,单位毫秒。 
     this.init=function()//对象初始化 
                 {this.key=""
                
this.value=""
                
this.expires=0
                              } 
   
this.set=function(key,value,expires)//设置cookie 
              {if(this.key=="")this.key=key; 
                             
if(this.value=="")this.value=value; 
                             
if(this.expires<=0)this.expires=expires; 
                             
if(this.key==""||typeof(this.key)!="string"
                 {alert(
"请先设置欲保存的cookie名称!"); 
                                  
this.init(); 
                  
return false
                 } 
               
if(this.key.match(/[,; ]/)) 
                 {alert(
"cookie名称中不能包含“,”、“;”或空格!"); 
                                  
this.init(); 
                  
return false
                 } 
               
if(this.value.toString().match(/[,; ]/)||typeof(this.value)=="undefined"
                 {alert(
"cookie值中不能包含“,”、“;”或空格!"); 
                                  
this.init(); 
                  
return false
                 } 
               
if(this.expires<=0||typeof(this.expires)!="number"
                 {alert(
"请先正确设置cookie的有效时间!"); 
                                  
this.init(); 
                  
return false
                 } 
               
var cookie=document.cookie; 
               
if(cookie.indexOf(this.key+"=")!=-1
                 {
if(!confirm("欲保存的cookie名称已经存在,是否要进行替换?")) 
                                    {
this.init(); 
                                         
return false
                                        }                     
                 } 
               
var dt=new Date(); 
               dt.setTime(dt.getTime()
+this.expires); 
                             document.cookie
=this.key+"="+this.value+";expires="+dt.toGMTString(); 
                             
this.init(); 
               
return true
              } 
   
this.get=function(key)//取得名为key的cookie的值 
              {if(key==""||key.match(/[,; ]/)) 
                 {alert(
"请正确设置欲查找的cookie名称!"
                  
return false
                 } 
               
var cookie=document.cookie; 
               
var start=cookie.indexOf(key+"="); 
               
if(start==-1
                 {alert(
"欲查找的cookie不存在!"
                  
return false
                 } 
               
var end=cookie.indexOf(";",start); 
                             
if(end==-1
                               end
=cookie.length; 
               
var getCookie=cookie.substring(start+key.length+1,end); 
               alert(
"cookie:"+key+"的值为"+getCookie); 
               
return getCookie; 
              } 
   
this.showAll=function(){alert("共有以下cookie对:\n"+document.cookie.split(";").toString().replace(/,/g,"\n"));}//显示所有cookie 
   this.del=function(key)//删除名为key的cookie 
              {if(key==""||key.match(/[,; ]/)) 
                 {alert(
"请正确设置欲删除的cookie名称!"
                  
return false
                 } 
                             
var dt=new Date(); 
               dt.setTime(dt.getTime()); 
                             document.cookie
=key+"=eyunDelete;expires="+dt.toGMTString(); 
                             
this.init(); 
               
return true
              } 
   
this.destroy=function()//销毁所有cookie 
                    {var dt=new Date(); 
                   dt.setTime(dt.getTime()); 
                                     
while(document.cookie!=""
                                       document.cookie
=document.cookie+";expires="+dt.toGMTString(); 
                                     
this.init(); 
                                     
return true 
                                    } 
  } 
var cookieTest=new eyunCookie() 
function settest() 
{cookieTest.key
="test" 
 cookieTest.value
="ok" 
 cookieTest.expires
=31536000000 
 cookieTest.set() 

</script> 
<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>