js封装Cookie操作 js 获取cookie js 设置cookie js 删除cookie

每天学习一点点 编程PDF电子书、视频教程免费下载:http://www.shitanlife.com/code

var CookieUtil = {
        // 设置cookie
        set : function (name, value, expires, domain, path, secure) {
            var cookieText = "";
            cookieText += encodeURIComponent(name) + "=" + encodeURIComponent(value);
            if (expires instanceof Date) {
                cookieText += "; expires=" + expires.toGMTString();
            }
            if (path) {
                cookieText += "; path=" + path;
            }
            if (domain) {
                cookieText += "; domain=" + domain;
            }
            if (secure) {
                cookieText += "; secure";
            }
            document.cookie = cookieText;
        },
        // name=value; expires=expiration_time; path=domain_path; domain=domain_name; secure
        // 获取cookie
        get : function (name) {
            var cookieName = encodeURIComponent(name) + "=",
                cookieStart = document.cookie.indexOf(cookieName),
                cookieValue = "";
            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;
        },
        // 删除cookie
        unset : function (name, domain, path, secure) {
            this.set(name, "", Date(0), domain, path, secure);
        }
    };
    // 测试
    CookieUtil.set("name", "zhang");
    var name = CookieUtil.get("name");
    alert(name);    // zhang
    CookieUtil.unset("name");
    alert(CookieUtil.get("name"));  // 空

针对cookie数据存储少量的问题,我们提出了子cookie的概念。即在每条cookie的值中存储多条数据,用"&"隔开。
    var SubCookieUtil = {
        /** 设置一条完整的cookie
        *   param name : 表示cookie的名称,必填
        *   param subCookies : 表示cookie的值,为一个对象,必填
        *   param expires : 表示cookie的过期时间,可以不填
        *   param domain : 表示cookie的域名,可以不填
        *   param path : 表示cookie的路径,可以不填
        *   param secure : 表示cookie的安全标志,可以不填
        *   eg : SubCookieUtil.setAll("info", { name : "zhang", age : 23});
        **/
        setAll : function (name, subCookies, expires, domain, path, secure) {
            var cookieText = "", subName, cookieParts = [];
            cookieText += encodeURIComponent(name) + "=";
            for(subName in subCookies) {
                cookieParts.push(encodeURIComponent(subName) + "=" + encodeURIComponent(subCookies[subName]));
            }
            if (cookieParts.length > 0) {
                cookieText += cookieParts.join("&");
                if (expires instanceof Date) {
                    cookieText += "; expires=" + expires.toGMTString();
                }
                if (path) {
                    cookieText += "; path=" + path;
                }
                if (domain) {
                    cookieText += "; domain=" + domain;
                }
                if (secure) {
                    cookieText += "; secure";
                }
            } else {
                cookieText += "; expires=" + Date(0).toGMTString();
            }
            document.cookie = cookieText;
        },
        /** 设置一条子cookie
        *   param name : 表示cookie的名称,必填
        *   param subName : 表示子cookie的名称,必填
        *   param value : 表示子cookie的值,必填
        *   param expires : 表示cookie的过期时间,可以不填
        *   param domain : 表示cookie的域名,可以不填
        *   param path : 表示cookie的路径,可以不填
        *   param secure : 表示cookie的安全标志,可以不填
        *   eg : SubCookieUtil.set("info", "sex", "boy");
        **/
        set : function (name, subName, value, expires, domain, path, secure) {
            var cookies = this.getAll(name) || {};
            cookies[subName] = value;
            this.setAll(name, cookies, expires, domain, path, secure);
        },
        /** 读取一条完整cookie
        *   param name : 表示cookie的名称,必填
        *   return : 一个cookie对象
        *   eg : SubCookieUtil.getAll("info");
        **/
        getAll : function (name) {
            var cookieName = encodeURIComponent(name) + "=",
                cookieStart = document.cookie.indexOf(cookieName),
                cookieValue = "", i, len, subCookies, parts, result = {};
            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));
                if (cookieValue.length > 0) {
                    subCookies = cookieValue.split("&");
                    for (i = 0, len = subCookies.length; i < len; i++) {
                        parts = subCookies[i].split("=");
                        result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
                    }
                    return result;
                }
            }
            return null;
        },
        /** 获取一条子cookie的值
        *   param name : 表示cookie的名称,必填
        *   param subName : 表示子cookie的名称
        *   return : 一个子cookie的值
        *   eg : SubCookieUtil.get("info", "name");
        **/
        get : function (name, subName) {
            var cookies = this.getAll(name);
            if (cookies) {
                return cookies[subName];
            } else {
                return null;
            }
        },
        /** 删除一条完整cookie
        *   param name : 表示cookie的名称,必填
        *   param domain : 表示cookie的域名,可以不填
        *   param path : 表示cookie的路径,可以不填
        *   param secure : 表示cookie的安全标志,可以不填
        *   eg : SubCookieUtil.unsetAll("info");
        **/
        unsetAll : function (name, domain, path, secure) {
            this.setAll(name, "", Date(0).toGMTString(), domain, path, secure);
        },
        /** 删除一条子cookie
        *   param name : 表示cookie的名称,必填
        *   param subName : 表示子cookie的名称,必填
        *   param domain : 表示cookie的域名,可以不填
        *   param path : 表示cookie的路径,可以不填
        *   param secure : 表示cookie的安全标志,可以不填
        *   eg : SubCookieUtil.unset("info", "name");
        **/
        unset : function (name, subName, domain, path, secure) {
            var cookies = this.getAll(name);
            if (cookies) {
                delete cookies[subName];
                this.setAll(name, cookies, null, domain, path, secure);
            }
        }
    };
    // 测试:
    var zhang = {
        name : "zhang",
        age : 23,
        height : "178cm",
        weight : "66kg"
    }
    // 设置一条完整的cookie
    SubCookieUtil.setAll("zhang", zhang);
    // 获取一条完整的cookie
    var zhang = SubCookieUtil.getAll("zhang");
    alert(zhang.weight);    // 66kg
    // 再为张添加一个子cookie
    SubCookieUtil.set("zhang", "sport", "basketball");
    // 获取子cookie
    alert(SubCookieUtil.get("zhang", "sport")); // basketball
    // 删除一条子cookie
    SubCookieUtil.unset("zhang", "age");
    alert(SubCookieUtil.get("zhang", "age"));   // undefined
    // 删除一条完整的cookie
    SubCookieUtil.unsetAll("zhang");
    alert(SubCookieUtil.getAll("zhang"));   // 报错,因为已经被删除

每天学习一点点 编程PDF电子书、视频教程免费下载:http://www.shitanlife.com/code

原文地址:https://www.cnblogs.com/scode2/p/8734529.html

时间: 2024-10-10 18:14:19

js封装Cookie操作 js 获取cookie js 设置cookie js 删除cookie的相关文章

js/java 获取、添加、修改、删除cookie(最全)

一.cookie介绍 1.cookie的本来面目 HTTP协议本身是无状态的.什么是无状态呢,即服务器无法判断用户身份.Cookie实际上是一小段的文本信息(key-value格式).客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie.客户端浏览器会把Cookie保存起来.当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器.服务器检查该Cookie,以此来辨认用户状态. 2.cookie本来运行机制 当用户第一

[js]作用域链查找规则获取值和设置值

作用域链查找规则获取值和设置值 <script> /** 1.作用域链查找规则 私有作用域出现的一个变量不是私有的,则往上一级作用域查找,上级作用域没有则继续向上级查找,一直找到window为止,如果window也没有了? 1)如果是获取值,则报错 2)如果是设置值,则相当于给window设置了一个属性 2.js代码一旦报错,则不往下执行了. */ function fn() { console.log(total); //获取值 total = 100; //设置值 } fn(); cons

js if for 详解 获取元素方式 及一些js 基础知识

##获取元素的新方法## --document.querySelector('Css Selector{css选择器}') 接收一个css选择器(通配,群组,类,包含,id....等) 若这个选择器对应的是一组元素,就找第0个,注意js从0开始计数.CSS计数从一开始. ##判断## 当同一种操作有两种不同结果时要用if if(判断条件){ 条件成立执行内容 }else{ 条件不成立执行内容} if括号中真正接收的是布尔值即true 或 false if(最终接收内容为true或false){

jquery里面的DOM操作(查找,创建,添加,删除节点)

一:创建元素节点(添加)    创建元素节点并且把节点作为元素的子节点添加到DOM树上 1.append(): 在元素下添加元素    用法:$("id").append("定义的节点"); 例如:var li1 = $("<li>橘子</li>");    添加属性节点:$("<li class='test'>草莓</li>") 2.appendTo(): 将元素添加到元素里面

Java中创建,获取和删除cookie

创建: Cookie cookie = new Cookie("Cookie",value);//创建名为Cookie的cookie设置参数 cookie.setMaxAge(30*24*60*60); //设置有效时间30天 cookie.setPath(request.getContextPath()); // 设置cookie有效路径 response.addCookie(cookie); 获取(也可以在js中使用<%代码%>): Cookie cookies[] =

selenium - webdriver - cookie操作

WebDriver提供了操作Cookie的相关方法,可以读取.添加和删除cookie信息. WebDriver操作cookie的方法: get_cookies(): 获得所有cookie信息. get_cookie(name): 返回字典的key为"name"的cookie信息. add_cookie(cookie_dict) : 添加cookie."cookie_dict"指字典对象,必须有name 和value 值. delete_cookie(name,opt

知识点整理之Java的Cookie操作

创建Cookie Java代码   // new一个Cookie对象,键值对为参数 Cookie cookie = new Cookie("key", "value"); // 设置Cookie最大生存时间,以秒为单位,负数的话为浏览器进程,关闭浏览器Cookie消失 cookie.setMaxAge(60);  // 一分钟 // 将Cookie添加到Response中,使之生效 response.addCookie(cookie); 读取Cookie,读取Coo

获取cookie,设置cookie,删除cookie

//获取cookie export const getCookie = (name) => { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) return (arr[2]); else return null; } //设置cookie export const setCookie = (params) =&g

设置cookie、读取cookie、删除cookie

假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使 用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的,当发生页面跳转或者页面关闭的时候,这些变量的值会重新载入,即没 有达到保存的效果.解决这个问题的最好的方案是采用cookie来保存该变量的值,那么如何来设置和读取cookie呢? 1.什么是Cookie "Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身

设置、读取、删除cookie

前端js: 1,设置cookie: document.cookie = 'name=zhangsan'2,读取cookie: console.log(document.cookie)(直接读就行)3,删除cookie: 为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时 //设置cookie function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays