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 高级程序设计第二版》

  • 相关阅读:
    HDU 5791 Two (DP)
    POJ 1088 滑雪 (DPor记忆化搜索)
    LightOJ 1011
    POJ 1787 Charlie's Change (多重背包 带结果组成)
    HDU 5550 Game Rooms (ccpc2015 K)(dp)
    HDU 5542 The Battle of Chibi (ccpc 南阳 C)(DP 树状数组 离散化)
    HDU 5543 Pick The Sticks (01背包)
    HDU 5546 Ancient Go (ccpc2015南阳G)
    NB-IoT的DRX、eDRX、PSM三个模式 (转载,描述的简单易懂)
    MQTT 嵌入式端通讯协议解析(转)
  • 原文地址:https://www.cnblogs.com/javawer/p/3670188.html
Copyright © 2011-2022 走看看