cookie封装

虽然现在HTML5胜行,localStorage已远远的胜过cookie,但是在天朝,ie6(基本已淘汰),ie7还需要考虑的前提下,cookie还是有用武之地的。

一直都有到cookie,也有了解过cookie的原理,工作中也一直不能忽视工期,基本使用cookie就用jquery.cookie.js解决啦,今天正好有时间就封装下原生的cookie函数。

代码如下(有详细注释):

/设置cookie
    function setCookie(name,value,d){
        var dateo=new Date(),//获取当前时间对象
            day=dateo.getDate();//获取当前的日期-1值
        dateo.setDate(day+d);//修改当前值为d天后
        document.cookie=name+"="+encodeURI(value)+"; expires="+dateo.toGMTString();//设置cookie,expires为过期日期,设置的格式应该是"name=value; expires=过期日期"
    }
    
    //获取cookie
    function getCookie(name){
        var cookiestr=document.cookie,//获取cookie,格式应该为"name=value; name0=value0"
            cookiearr0=cookiestr.split("; "),//以"; "来分构字符串成数组 ["name=value","name0=value0"]
            cookiearr1=[];
        for(var i=0;i<cookiearr0.length;i++){
            cookiearr1=cookiearr0[i].split("=");//以"="分构字符串为数组,["name","value"]
            if(cookiearr1[0]==name){//如果找到相同名称的cookie,返回它的值
                return decodeURI(cookiearr1[1]);
            }
        }
        return "";//如果没有找到相同名的cookir,返回空
    }

    //删除cookie
    function removeCookie(name){
        setCookie(name,"",-1);//把过期时间设为昨天,即删除了当前cookie
    }

测试代码如下(本地用火狐,chrome本地不支持操作cookie,IE下查看不方便):

    setCookie("test","你是谁?",1);
    console.log(getCookie("test"));
    setTimeout(function(){
        removeCookie("test");
    },10000)
    setTimeout(function(){
        console.log(getCookie("test"));
    },11000)

在线测试环境

posted @ 2015-09-22 00:49  !win !  阅读(532)  评论(0编辑  收藏  举报