zoukankan      html  css  js  c++  java
  • js cookie 工具

    var CookieUtil = {
        get: function(name) {
            var cookieName = encodeURIComponent(name) + "=",
                cookieStart = document.cookie.indexOf(cookieName),
                cookieValue = null;
            
            if (cookieStart > -1) {
                var cookieEnd = document.cookie.indexOf(";", cookieStart);
                if (cookieEnd == -1)  {
                    cookieEnd = document.cookie.length;
                }
                cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
                
            }
            return cookieValue;
        },
        set: function(name, value, expires, path, domain, secure)  {
            var  cookieText = encodeURIComponent(name) + "=" + encodeURIComponent(value);
            
            if (expires instanceof Date)  {
                cookieText += "; expires=" + expires.toDateString();  //toGMTString
            }
            
            if (path)  {
                cookieText += "; path=" + path;
            }
            
            if (domain)  {
                cookieText += "; domain=" + domain;
            }
            
            if (secure)  {
                cookieText += "; secure";
            }
            
            document.cookie = cookieText;
        },
        unset: function(name, path, domain, secure)  {
            this.set(name, "", new Date(0), path, domain, secure);
        }   
    };

    子cookie

    //name=name1=value&name2=value&name3=value&name4=value
    //子cookie 的处理方法
    var SubCookieUtil =  {
        get: function (name, subName)  {
            var subCookies = this.getAll(name);
            return subCookies ? subCookies[subName]: null;
        },
        
        getAll: function (name)  {
            var cookieName = encodeURIComponent(name) + "=", 
                cookieStart = document.cookie.indexOf(cookieName),
                cookieValue = null,
                result = {};
            
            if (cookieStart > -1)  {
                var cookieEnd = document.cookie.indexOf(';', cookieStart);
                if (cookieEnd == -1) {
                    cookieEnd = document.cookie.length;
                }
                
                cookieValue = document.cookie.substring(cookieStart + cookieName.length, cookieEnd);
                
                if (cookieValue.length > 0)  {
                    var subCookies = cookieValue.split(' & ');
                    
                    for (var i =0, len = subCookies.length; i < len; i++) {
                        var parts = subCookies[i].split('=');
                        result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
                    }
                    return result;
                }
                
                return null;
            }
        },
        
        set: function (name, subName, value, expires, path, domain, secure) {
            var subcookies = this.getAll(name) || {};
            subcookies[subName] = value;
            this.setAll(name, subcookies, expires, path, domain, secure);
        },
        setAll: function (name, subcookies, expires, path, domain, secure) {
            var cookieText = encodeURIComponent(name) + '=';
            var subCookieParts = new Array();
            
            for (var subName in subcookies)  {
                if (subName.length > 0 && subcookies.hasOwnProperty(subName))  {
                    subCookieParts.push(encodeURIComponent(subName) + '=' + encodeURIComponent(subcookies[subName]));
                }
            }
            
            if (subCookieParts.length > 0)  {
                cookieText += subCookieParts.join(" & ");
                
                if (expires instanceof Date)  {
                    cookieText += '; expires=' + expires.toDateString();
                }
                
                if (path)  {
                    cookieText += '; path=' + path;
                }
                
                if (domain)  {
                    cookieText += '; domain' + domain;
                }
                
                if (secure) {
                    cookieText += '; secure';
                }
            } else {
                cookieText += '; expires=' + (new Date(0).toDateString());
            }
            
            document.cookie = cookieText;
        },
        
        unset: function (name, subName, path, domain, secure) {
            var subcookies = this.getAll(name);
            if (subcookies) {
                delete subcookies[subName];
                this.setAll(name, subcookies, null, path, domain, secure);
            }
        },
        unsetAll: function (name, path, domain, secure) {
            this.setAll(name, null, new Date(0), path, domain, secure);
        }
    };
    View Code

    来自:《JavaScript 高级程序设计第二版》

  • 相关阅读:
    第四讲动手动脑集课后作业
    第三讲课后作业
    课后作业01
    《大道至简》第一章伪代码读后感
    第八周学习进度条
    第七周学习进度条
    求一维联通数组的最大子数组之和
    求二维数组的最大联通子数组之和
    第六周学习进度条
    求一个数组的最大子数组之和
  • 原文地址:https://www.cnblogs.com/javawer/p/3670188.html
Copyright © 2011-2022 走看看