网络科技

    今日:411| 主题:246403
收藏本版
互联网、科技极客的综合动态。

[其他] JavaScript cookie 的工具函数封装

[复制链接]
栀子Scentflavor 发表于 2016-10-3 21:40:29
25 0

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一. 语法

  1.1 获取当前页面的所有cookie:

  1. var allCookies = document.cookie;
复制代码
allCookies 是一个字符串,其中包含了以分号分隔的cookie列表字符串 (即    key=value键值对)。  
  1.2 写一个新cookie:

  1. document.cookie = updatedCookie;
复制代码
updatedCookie是一个键值对形式的字符串。只能用这个方法一次设置或更新一个cookie,而且写入并不是覆盖,而是添加。例如:
  1. document.cookie = "fontSize=14";
  2. document.cookie = "fontSize=16";
  3. document.cookie = "fontColor=black";

  4. document.cookie; // fontSize=16;fontColor=black
复制代码
1.3 可选属性:

  除了Cookie本身的内容,还有一些可选的属性也是可以写入的,定义cookie的设定/更新,跟着一个分号以作分隔:
  1. Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]
复制代码

       
  • (1)      path=path(例如 ‘/’, ‘/mydir’) 如果没有定义,默认为当前文档位置的路径。   
  • (2)      domain=domain(例如 ‘example.com’, ‘.example.com’ (包括所有子域名), ‘subdomain.example.com’) 如果没有定义,默认为当前文档位置的路径的域名部分。   
  • (3)      max-age=max-age-in-seconds(例如一年为60      6024*365)   
  • (4)      expires=date-in-GMTString-format如果没有定义,cookie会在对话结束时过期。这个值的格式参见      Date.toUTCString()。   
  • (5)      secure(cookie只通过https协议传输) cookie的值字符串可以用encodeURIComponent()来保证它不包含任何逗号、分号或空格(cookie值中禁止使用这些值)。  
  二. cookie的接口封装:

  1. var cookieUtil = {
  2.     // 设置cookie
  3.     setItem: function(name, value, days) {
  4.         var date=new Date();
  5.         date.setDate(date.getDate()+days);
  6.         document.cookie=name+'='+value+';expires='+date;
  7.     },

  8.     // 获取cookie
  9.     getItem: function(name) {
  10.          var arr=document.cookie.replace(/\s/g, "").split(';');
  11.          for(var i=0;i<arr.length;i++) {
  12.              var tempArr=arr[i].split('=');
  13.              if(tempArr[0]==name) {
  14.                 return decodeURIComponent(tempArr[1]);
  15.              }
  16.          }
  17.          return '';
  18.     },

  19.     // 删除cookie
  20.     removeItem: function(name) {
  21.         this.setItem(name,'1', -1);
  22.     },

  23.     // 检查是否含有某cookie
  24.     hasItem: function(name) {
  25.         return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(name).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
  26.     },

  27.     // 获取全部的cookie列表
  28.     getAllItems: function() {
  29.         var cookieArr = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
  30.         for (var nIdx = 0; nIdx < cookieArr.length; nIdx++) { cookieArr[nIdx] = decodeURIComponent(cookieArr[nIdx]); }
  31.         return cookieArr;
  32.     }
  33. };
复制代码
友荐云推荐




上一篇:3 mysterious and scary ways AdWords budget creep can happen to you
下一篇:Amazon’s simpler, cheaper Echo Dot is still pretty great
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表