js 操作cookie

$(function(){
    /**
     * version 1.0
     * 功能:此文件旨在通过js操作cookie,包括cookie的读和写
     * 作者:郭军周
     * Email:853547029@qq.com
     * 使用举例:
     *      window.__cookie.setCookie(string key,string value,int time);
     *      window.__cookie.getCookie(string key);
     * 几点说明:
     *      1:cookie 以字符串的形式保存在 document.cookie 中
     *      2:window 对象持有 document 对象的只读引用。这决定了,我们可以通过 window.document.cookie 的
     *          方式,获取这个 cookie 字符串,但这种方式不能够实现对cookie的赋值。即:
     *          window.document.cookie = 'aaa'; 并不能改变cookie
     *          此时,我们应该通过 document.cookie = 'aaa'; 的方式进行对cookie的修改
     *      3:对于 cookie 过期时间的几点说明:
     *          3.1:这个时间,以“毫秒”为单位,1000ms = 1s;
     *          3.2:只有当 cookie 中的该“键值对”还未过期时,document.cookie 中才有该键值对的字符串形式。
     *              简言之,在获取 cookie 时,并不需要手动对过期时间进行验证,因为,如果过期,将得不到此值。
     *          3.3:至于,该键值对,是否过期,以及过期的处理,是由浏览器本身来实现的。
     *      4:对于设置 cookie 时 key,value,expire 的几点说明:
     *          4.1:推荐 window.__cookie.setCookie(string,string,int)。下面的调用方式,可能造成各种莫名的问题,不建议。
     *              window.__cookie.setCookie(1,2,30000);
     *              window.__cookie.setCookie('',2,30000);
     *              window.__cookie.setCookie(2,'',30000);
     *              window.__cookie.setCookie(3,'',30000);
     *              window.__cookie.setCookie('_','',30000);
     *              window.__cookie.setCookie(-1,'',30000);
     *              window.__cookie.setCookie(';','',30000);
     *          4.2:setCookie 和 getCookie 的参数说明:
     *              并未对其参数做过多验证,比如:key 应该满足变量的命名规范。因为,php确实能够处理关联数组。
     **/
    window.__cookie = {
        'cookieEnabled' : window.navigator.cookieEnabled,
        'setCookie' : function(key,value,expire){
            if(!this.cookieEnabled){
                alert('浏览器未开启或者cookie功能!');
                return false;
            }
            var exdate = new Date();
            exdate.setTime(exdate.getTime()+expire);
            var c_nvalue=escape(value) + ((expire==null) ? "" : "; expires="+exdate.toUTCString());
            if(this.getCookie(key) == null){
                document.cookie = key + "=" + c_nvalue + document.cookie;
            }else{
                var c_value = window.document.cookie;
                var c_start = c_value.indexOf(" " + key + "=");
                if(c_start == -1){
                    c_start = c_value.indexOf(key + "=");
                }
                c_start = c_value.indexOf("=", c_start) + 1;
                var c_end = c_value.indexOf(";", c_start);
                if(c_end == -1){
                    c_end = c_value.length;
                }
                document.cookie = c_value.substring(0,c_start) + c_nvalue + c_value.substring(c_end,c_value.length);
            }
        },
        'getCookie' : function(c_name){
            if(!this.cookieEnabled){
                alert('浏览器未开启或者cookie功能!');
                return false;
            }
            var c_value = window.document.cookie;
            var c_start = c_value.indexOf(" " + c_name + "=");
            if(c_start == -1){
                c_start = c_value.indexOf(c_name + "=");
            }
            if(c_start == -1){
                c_value = null;
            }else{
                c_start = c_value.indexOf("=", c_start) + 1;
                var c_end = c_value.indexOf(";", c_start);
                if(c_end == -1){
                    c_end = c_value.length;
                }
                c_value = unescape(c_value.substring(c_start,c_end));
            }
            return c_value;
        }
    }
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值