JavaScript基础 cookie

2018-03-15  本文已影响0人  0说

cookie存储数据
存储在本地电脑,以便下次访问
自动填写密码,账号都是cookie存储
会跟后台交互,最大存储4KB
请求数据的时候它也会跟着发送

以名值对

设置cookie

document.cookie = ' jmens = 6666 ';
document.cookie = ' ali = 9999';
document.cookie = ' afei = 8888';
console.log( document.cookie );
打印出来
浏览器中的cookie
图片.png

关闭浏览器就会清除cookie
注意:不能下面这样设置

document.cookie = ' jmens = 6666 ;  ali = 9999 ;  afei = 8888 ';

设置到期时间expries

有效时长:
默认关闭浏览器就清除
使用expires = 国际标准时间戳,来规定到期时间
日期对象.toUTCString() ====当前时间换成UTC时间
流程:先获取当前日期对象 --->转换成毫秒娄 --->加上你规定的到期时长对应的毫秒数

 var date = new Date(new Date().getTime() + 10*365*24*60*60*1000).toUTCString();
    document.cookie = 'jmens = 6666; expires='+ date;
    console.log( document.cookie )
图片.png

案例

<body>
<p id="lastTime"></p>
<p id="nowTime"></p>
<script>
    //获取一下现在的时间并格式化
    var lastTime = document.getElementById( 'lastTime' ),
        nowTime = document.getElementById( 'nowTime' ),
        date = new Date(),
        YY = date.getFullYear(),
        MM = date.getMonth()+1,
        DD = date.getDate(),
        HH = addZero( date.getHours() ),
        mm = addZero( date.getMinutes() ),
        ss = addZero( date.getSeconds() ),
        time = YY + '-' + MM + '-' + DD + ' ' + HH + ':' + mm + ':' + ss;

    var reg = /\blastTime=([^;]+)(;|$)/, //[^;]这里匹配除了;以外的其他字符 ([^;]+)把它变成子集方便等会取值  (;|$) 前面匹配完后下面是以;或者 前面部分某个符合匹配结束
        last = document.cookie.match(reg);
    if( last ){//有值的时候 有访问过
        //更新一下上次访问的时间
        document.cookie = 'lastTime='+last+';expires='+ new Date(date.getTime()+10*24*60*60*1000).toUTCString();
        lastTime.innerHTML = '您上次访问的时间是' + last[1]; //取到第一个子集  ([^;]+) 匹配到单单时间的部分
    } else {
        //没有值的时候 没有访问过
        lastTime.innerHTML = '欢迎您第一次来到本站!!';
    }
    //初始访问时给lastTime设置时间
    document.cookie = 'lastTime='+ time +';expires='+ new Date(date.getTime()+10*24*60*60*1000).toUTCString();
    nowTime.innerHTML = '您本次访问本站的时间是:' + time;
    function addZero( n ) {
        return n<10 ? '0'+ n : n+'';
    }
</script>
</body>
Animation.gif

cookie封装

 setCookie({
        ali : 9999
    },10)
    removeCookie( 'ali' )
    //设置cookie
    function setCookie( json , time ){
        for( var key in json ){
            document.cookie = key + '=' + json[key]+';expires='+new Date(Date.now()+time*365*24*60*60*1000).toUTCString();
        }
    }
    //获取cookie
    function getCookie( attr ) {
        var attr = '\\b'+attr+'=([^;]+)(;|$)', //这里\\b 如果在字符串里单单 \b 有特殊意义 所以要\\b转义一下
            reg = new RegExp( attr ),
            arr = document.cookie.match(reg);
        return arr[1] ? arr[1] : ''; //判断一下有没有值 如果没有return '' 如果有值arr[1]
    }
    //删除cookie  思路就是把到期时间设为过去时间 会就自动删除
    function removeCookie( attr ) {
        var json = {}; //我们要把到期时间设为过去 就要用到设置cookie  参数要用json 所以我们定义一下json来接收
        json[attr] = '';//这里要把我们传的attr变成json里面的属性 我们只要设置时间 json的值可以随便
        setCookie( json , -999 )
    }
上一篇下一篇

猜你喜欢

热点阅读