1. 每天学习一点点 编程PDF电子书、视频教程免费下载:
    http://www.shitanlife.com/code
  2. var CookieUtil = {
  3. // 设置cookie
  4. set : function (name, value, expires, domain, path, secure) {
  5. var cookieText = "";
  6. cookieText += encodeURIComponent(name) + "=" + encodeURIComponent(value);
  7. if (expires instanceof Date) {
  8. cookieText += "; expires=" + expires.toGMTString();
  9. }
  10. if (path) {
  11. cookieText += "; path=" + path;
  12. }
  13. if (domain) {
  14. cookieText += "; domain=" + domain;
  15. }
  16. if (secure) {
  17. cookieText += "; secure";
  18. }
  19. document.cookie = cookieText;
  20. },
  21. // name=value; expires=expiration_time; path=domain_path; domain=domain_name; secure
  22. // 获取cookie
  23. get : function (name) {
  24. var cookieName = encodeURIComponent(name) + "=",
  25. cookieStart = document.cookie.indexOf(cookieName),
  26. cookieValue = "";
  27. if (cookieStart > -1) {
  28. var cookieEnd = document.cookie.indexOf (";", cookieStart);
  29. if (cookieEnd == -1) {
  30. cookieEnd = document.cookie.length;
  31. }
  32. cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
  33. }
  34. return cookieValue;
  35. },
  36. // 删除cookie
  37. unset : function (name, domain, path, secure) {
  38. this.set(name, "", Date(0), domain, path, secure);
  39. }
  40. };
  41. // 测试
  42. CookieUtil.set("name", "zhang");
  43. var name = CookieUtil.get("name");
  44. alert(name); // zhang
  45. CookieUtil.unset("name");
  46. alert(CookieUtil.get("name")); // 空
  47.  
  48. 针对cookie数据存储少量的问题,我们提出了子cookie的概念。即在每条cookie的值中存储多条数据,用"&"隔开。
  1. var SubCookieUtil = {
  2. /** 设置一条完整的cookie
  3. * param name : 表示cookie的名称,必填
  4. * param subCookies : 表示cookie的值,为一个对象,必填
  5. * param expires : 表示cookie的过期时间,可以不填
  6. * param domain : 表示cookie的域名,可以不填
  7. * param path : 表示cookie的路径,可以不填
  8. * param secure : 表示cookie的安全标志,可以不填
  9. * eg : SubCookieUtil.setAll("info", { name : "zhang", age : 23});
  10. **/
  11. setAll : function (name, subCookies, expires, domain, path, secure) {
  12. var cookieText = "", subName, cookieParts = [];
  13. cookieText += encodeURIComponent(name) + "=";
  14. for(subName in subCookies) {
  15. cookieParts.push(encodeURIComponent(subName) + "=" + encodeURIComponent(subCookies[subName]));
  16. }
  17. if (cookieParts.length > 0) {
  18. cookieText += cookieParts.join("&");
  19. if (expires instanceof Date) {
  20. cookieText += "; expires=" + expires.toGMTString();
  21. }
  22. if (path) {
  23. cookieText += "; path=" + path;
  24. }
  25. if (domain) {
  26. cookieText += "; domain=" + domain;
  27. }
  28. if (secure) {
  29. cookieText += "; secure";
  30. }
  31. } else {
  32. cookieText += "; expires=" + Date(0).toGMTString();
  33. }
  34. document.cookie = cookieText;
  35. },
  36. /** 设置一条子cookie
  37. * param name : 表示cookie的名称,必填
  38. * param subName : 表示子cookie的名称,必填
  39. * param value : 表示子cookie的值,必填
  40. * param expires : 表示cookie的过期时间,可以不填
  41. * param domain : 表示cookie的域名,可以不填
  42. * param path : 表示cookie的路径,可以不填
  43. * param secure : 表示cookie的安全标志,可以不填
  44. * eg : SubCookieUtil.set("info", "sex", "boy");
  45. **/
  46. set : function (name, subName, value, expires, domain, path, secure) {
  47. var cookies = this.getAll(name) || {};
  48. cookies[subName] = value;
  49. this.setAll(name, cookies, expires, domain, path, secure);
  50. },
  51. /** 读取一条完整cookie
  52. * param name : 表示cookie的名称,必填
  53. * return : 一个cookie对象
  54. * eg : SubCookieUtil.getAll("info");
  55. **/
  56. getAll : function (name) {
  57. var cookieName = encodeURIComponent(name) + "=",
  58. cookieStart = document.cookie.indexOf(cookieName),
  59. cookieValue = "", i, len, subCookies, parts, result = {};
  60. if (cookieStart > -1) {
  61. var cookieEnd = document.cookie.indexOf (";", cookieStart);
  62. if (cookieEnd == -1) {
  63. cookieEnd = document.cookie.length;
  64. }
  65. cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
  66. if (cookieValue.length > 0) {
  67. subCookies = cookieValue.split("&");
  68. for (i = 0, len = subCookies.length; i < len; i++) {
  69. parts = subCookies[i].split("=");
  70. result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
  71. }
  72. return result;
  73. }
  74. }
  75. return null;
  76. },
  77. /** 获取一条子cookie的值
  78. * param name : 表示cookie的名称,必填
  79. * param subName : 表示子cookie的名称
  80. * return : 一个子cookie的值
  81. * eg : SubCookieUtil.get("info", "name");
  82. **/
  83. get : function (name, subName) {
  84. var cookies = this.getAll(name);
  85. if (cookies) {
  86. return cookies[subName];
  87. } else {
  88. return null;
  89. }
  90. },
  91. /** 删除一条完整cookie
  92. * param name : 表示cookie的名称,必填
  93. * param domain : 表示cookie的域名,可以不填
  94. * param path : 表示cookie的路径,可以不填
  95. * param secure : 表示cookie的安全标志,可以不填
  96. * eg : SubCookieUtil.unsetAll("info");
  97. **/
  98. unsetAll : function (name, domain, path, secure) {
  99. this.setAll(name, "", Date(0).toGMTString(), domain, path, secure);
  100. },
  101. /** 删除一条子cookie
  102. * param name : 表示cookie的名称,必填
  103. * param subName : 表示子cookie的名称,必填
  104. * param domain : 表示cookie的域名,可以不填
  105. * param path : 表示cookie的路径,可以不填
  106. * param secure : 表示cookie的安全标志,可以不填
  107. * eg : SubCookieUtil.unset("info", "name");
  108. **/
  109. unset : function (name, subName, domain, path, secure) {
  110. var cookies = this.getAll(name);
  111. if (cookies) {
  112. delete cookies[subName];
  113. this.setAll(name, cookies, null, domain, path, secure);
  114. }
  115. }
  116. };
  117. // 测试:
  118. var zhang = {
  119. name : "zhang",
  120. age : 23,
  121. height : "178cm",
  122. weight : "66kg"
  123. }
  124. // 设置一条完整的cookie
  125. SubCookieUtil.setAll("zhang", zhang);
  126. // 获取一条完整的cookie
  127. var zhang = SubCookieUtil.getAll("zhang");
  128. alert(zhang.weight); // 66kg
  129. // 再为张添加一个子cookie
  130. SubCookieUtil.set("zhang", "sport", "basketball");
  131. // 获取子cookie
  132. alert(SubCookieUtil.get("zhang", "sport")); // basketball
  133. // 删除一条子cookie
  134. SubCookieUtil.unset("zhang", "age");
  135. alert(SubCookieUtil.get("zhang", "age")); // undefined
  136. // 删除一条完整的cookie
  137. SubCookieUtil.unsetAll("zhang");
  138. alert(SubCookieUtil.getAll("zhang")); // 报错,因为已经被删除
  139. 每天学习一点点 编程PDF电子书、视频教程免费下载:
    http://www.shitanlife.com/code

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

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

      一.cookie介绍 1.cookie的本来面目 HTTP协议本身是无状态的.什么是无状态呢,即服务器无法判断用户身份.Cookie实际上是一小段的文本信息(key-value格式).客户端向服务 ...

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

    作用域链查找规则获取值和设置值 <script> /** 1.作用域链查找规则 私有作用域出现的一个变量不是私有的,则往上一级作用域查找,上级作用域没有则继续向上级查找,一直找到windo ...

  3. Jquery和js实现cookie操作手机浮层广告;附加:js获取、添加、删除cookie

    1.jquery cookie包实现手机上的浮层广告 <span style="font-size:18px;">$(document).ready(function( ...

  4. 原生js封装dom操作库

    var utils = (function(window) { var flag = "getComputedStyle" in window; function win(attr ...

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

    ##获取元素的新方法## --document.querySelector('Css Selector{css选择器}') 接收一个css选择器(通配,群组,类,包含,id....等) 若这个选择器对 ...

  6. iOS UIWebView 中 js调用OC 打开相册 获取图片, OC调用js 将图片加载到html上

    线上html <!DOCTYPE html> <html> <head> <title>HTML中用JS调用OC方法</title> < ...

  7. vue.js设置、获取、删除cookie

    项目需要前端获取后台返回的cookie,并以此作判断.我是在main.js入口文件下使用的 具体代码: new Vue({ el: '#app', router, template: '<App ...

  8. cookie操作大全

    JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由J ...

  9. 自动化测试基础篇--Selenium cookie操作

    摘自https://www.cnblogs.com/sanzangTst/p/8376471.html 在验证浏览器中cookie是否正确时,有时基于真实cookie的测试是无法通过白盒和集成测试进行 ...

  10. selenium - webdriver - cookie操作

    WebDriver提供了操作Cookie的相关方法,可以读取.添加和删除cookie信息. WebDriver操作cookie的方法: get_cookies(): 获得所有cookie信息. get ...

随机推荐

  1. 深入浅出 JVM GC(4)常用 GC 参数介绍

    # 前言 从前面的3篇文章中,我们分析了5个垃圾收集器,还有一些 GC 的算法,那么,在 GC 调优中,我们肯定会先判断哪里出现的问题,然后再根据出现的问题进行调优,而调优的手段就是 JVM 提供给我 ...

  2. [PHP] 算法-请找出带环链表的环的入口结点的PHP实现

    给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null 1.找链表倒数第k个结点,输入一个链表,输出该链表中倒数第k个结点.第一个指针走(k-1)步,到达第k个节点,两个指针同时往后 ...

  3. 让js中的函数只有一次有效调用的三种常用方法

    1.通过闭包来实现. <script> window.onload = function () { function once(fn) { var result; return funct ...

  4. 2017-12-01 中英文代码对比之ZLOGO 4 & LOGO

    基于前文中文编程语言之Z语言初尝试: ZLOGO 4的一些评论, 此文尝试作一个非常简单的代码对比, 使讨论更加有实例根据. 下图是节选自前文最后的示例代码, 由于选取的对照LOGO版本 (alanc ...

  5. 【代码笔记】Web-ionic-表单和输入框

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. npm install权限问题,报错:permission denied。

    1.部署gulp项目时,nodeJs和gulp都已经正确安装,在项目内部执行npm install命令时,有些gulp的插件一直下载不成功,报错几种以下错误: “gulp-imagemin: Coul ...

  7. opencv学习网站[国外网站]+ 各种学习资料

    1.Learn OpenCV 使用C++和python和opencv结合编写的教程,上面有丰富的小实验,并且有完整的源码. 2.pyimagesearch python+opencv编写的实例教程,有 ...

  8. mysql主从复制报错(一主一从):从库报错Last_SQL_Errno: 1008

    配置完主从复制后(一主一从),在从库删了一个测试库,结果在从库上使用show slave status\G查看主从同步状态报如下错误:Last_Errno: 1008,经过排查得知:主从环境删除要先在 ...

  9. Loadrunner 运行场景-场景中的全局变量与关联结果参数

    运行场景-场景中的全局变量与关联结果参数   by:授客 QQ:1033553122 A.   全局变量 实验1: globals.h #ifndef _GLOBALS_H #define _GLOB ...

  10. .Net Core 2.0 生态(1).NET Standard 2.0 特性介绍和使用指南

    .NET Standard 2.0 发布日期:2017年8月14日 公告原文地址 前言 早上起来.NET社区沸腾了,期待已久的.NET Core 2.0终于发布!根据个人经验,微软的产品一般在2.0时 ...