• 非常有用的JS操作Cookie类
    时间:2008-12-13   作者:佚名   出处:互联网

    <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<=0typeof(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 />

    网友留言/评论

    我要留言/评论

    相关文章

    Raid的学习和基础知识:各种意外灾难、错误带来的数据损坏和丢失给人们带来的损失和不便,个人及网站服务器的数据必须要备份,作Raid便是一种可行而有效的方法。Raid分为软Raid和硬raid......
    软RAID 0的技术概要及实现:Software RAID 中译是软RAID ,软RAID 比如常用的有RAID 0 、RAID 1 、RAID 5、RAID 10 ;本文主要讲述RAID 0、1、5、10的基本概念及软RAID 的创建、修复和管理;
    基于JSON的高级AJAX开发技术详解:AJAX已经成为当今Web开发中一种强有力的用户交互技术,但是它的许多可能性应用仍然鲜为人知。在本文中,我们将来共同探讨如何使用 JavaScript对象标志(JSON)和JSON分析器在服务器和客户端AJAX引擎之间创建复杂而强有力的JSON数据传输层。我们将详细讨论如何 创建一组对象(在其它语言中经常被当作一个包),如何把这些对象串行化为JSON以发送到服务器端,以及如何把服务器端JSON反串行化为客户端 JavaScript对象。