• javascript操作cookie类(转)


    function setCookie(name,value)
    {
        var Days = 30;
        var exp = new Date();    //new Date("December 31, 9998");
            exp.setTime(exp.getTime() + Days*24*60*60*1000);
            document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    }
    function getCookie(name)
    {
        var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
            if(arr=document.cookie.match(reg)) return unescape(arr[2]);
            else return null;
    }
    function delCookie(name)
    {
        var exp = new Date();
            exp.setTime(exp.getTime() - 1);
        var cval=getCookie(name);
            if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
    }

    js操作cookies类
    2007-09-12 15:43

    方法一:

    <scriptlanguage="JavaScript">

    function Cookie(delim){//操作Cookie类

         Array.prototype.splice=function(){

             var len=arguments.length,tarray=[],i=arguments[0]+arguments[1];

             if(len>1){

                while(i<this.length)tarray[tarray.length]=this[i++];

                this.length=arguments[0];

                if(len>2)for(var i=2;i<len;i++)this[this.length]=arguments[i];

                var tlen=tarray.length,i=0;

                while(i<tlen)this[this.length]=tarray[i++];

                }

            return this;

             }

         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 inthis._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+";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){

             this._Cookie[name]=[];

             this._Cookie[name]["timeout"]=new Date().getTime()+days*86400000;

             }

         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){

             this._Cookie[name].splice(index,1);

             }

         this.GetCount=function(name){

            return this._Cookie[name].length;

             }

         this.GetItem=function(name,index){

            return this._Cookie[name][index];

             }

         }

    </script>

    <scriptlanguage="JavaScript">

    /*

    ====================================

    Design :Flashsoft

    ====================================

    浏览器能够通过Cookies保留有关数据。象Windows的注册表一样,用户不必知道Cookies的具体位置,浏览器能找到这些数据。第六代 的浏览器,不管是IE还是NS都支持document.cookie属性。通过这个属性来读取或修改Cookies的值。不过Cookies的存储形式是 非结构化的长字符串,需要经过相应的解析后才有意义。

    Cookies的表达如下,除了name=value以外,其它均为可选:

    name=value;

    expires=date;

    domain=domainname

    path=pathname;

    secure;

    例如:

    User=HockeyDude;expires=Thu,01-Jan-70 00:00:01 GMT; domain=www.mydomain.com; path=/images;secure;

    Pass=Gretzky; expires=Thu,01-Jan-7000:00:01 GMT; domain=www.mydomain.com; path=/images; secure;

    这么长的两个字符串只代表了两个Cookies。如果还要再加上电子信箱或其他信息就还得加长字符串。通常都是通过分解这样的字符串来取得各个变量或元素的。这实在是费时费力的事。

    使用面向对象设计(ObjectOriented Design,OOD)的思路来编写Cookies处理函数,其特点如下:

    便于增删子项。这是很重要的,有些浏览器限制Cookies的使用数量。

    通过修改函数可以容易地修改时效数据。通常的做法很麻烦,要拷贝Cookies,删除原Cookies,修改并重写Cookies。

    Cookies和它的子项存放在数组里。可以根据需要快速而有效地进行修改。这样也无须解析那长长的字符串。

    Cookies对象的使用

    以下是对象的公有方法:

    方括号[]内是可选参数

    //构造

    Cookie([定界符,缺省为句点]) - 构造函数

    //初始化

    GetCookieCount() - 返回Cookies数量

    Create(name, days) - 创建Cookies及其时效天数

    Modify(name, days) - 修改Cookies的时效天数

    Delete(name) - 删除Cookies及其子项

    GetTime(name) - 返回指定Cookies的过期时间

    GetCount(name) - 返回Cookies的子项数量

    AddItem(name,value) - 增加一个子项

    GetItem(name,index) - 返回指定索引的子项

    DelItem(name,index) - 删除指定的子项

    //存取

    Load() - 读取Cookies

    Save() - 存储Cookies

    下面是应用实例:

    */

    var CookieClass=new Cookie();

    if(!CookieClass.Load()){

         CookieClass.Create("Pass",1);

         CookieClass.Create("User",1);

         CookieClass.AddItem("Pass","Ps1");

         CookieClass.AddItem("Pass","Ps2");

         CookieClass.AddItem("Pass","Ps3");

         CookieClass.AddItem("Pass","Ps4");

         CookieClass.AddItem("Pass","Ps5");

         CookieClass.AddItem("Pass","Ps6");

         CookieClass.DelItem("Pass",1);

         CookieClass.Save();

         }

    alert("Cookie过期时间:"+CookieClass.GetTime("Pass").toLocaleString());

    alert(document.cookie);

    </script>

    方法二:

    <script language="Javascript">

    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(){//显示所有cookie

            alert("共有以下cookie对:/n"+document.cookie.split(";").toString().replace(/,/g,"/n"));

         }

         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>

  • 相关阅读:
    松软科技web课堂:SQLServer之ROUND() 函数
    松软科技web课堂:SQLServer之LEN() 函数
    接口工具比较
    记录EXCEL格式和TXT文本格式之间的互转
    Fiddler安装证书
    Nginx概述及安装配置
    YSLOW(一款实用的网站性能检测工具)
    通用测试用例大全
    Macaca环境配置及样例执行
    ADB命令
  • 原文地址:https://www.cnblogs.com/Mygirl/p/2387369.html
Copyright © 2020-2023  润新知