js 操作 cookie

页面导航:首页 > 网络编程 > JavaScript > js 操作 cookie

js 操作 cookie

来源: 作者: 时间:2016-02-02 09:59 【

$(function(){ ** * version 1 0 * 功能:此文件旨在通过js操作cookie,包括cookie的读和写 * 作者:郭军周 * Email:[email protected] com * 使
$(function(){
    /**
     * version 1.0
     * 功能:此文件旨在通过js操作cookie,包括cookie的读和写
     * 作者:郭军周
     * Email:
     * 使用举例:
     *      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;
        }
    }
});
Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<