JavaScript中cookie工具函数封装的示例代码


Posted in Javascript onOctober 11, 2016

一. 语法

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

var allCookies = document.cookie;

allCookies 是一个字符串,其中包含了以分号分隔的cookie列表字符串 (即 key=value 键值对)。

1.2 写一个新cookie:

document.cookie = updatedCookie;

updatedCookie是一个键值对形式的字符串。只能用这个方法一次设置或更新一个cookie,而且写入并不是覆盖,而是添加。例如:

document.cookie = "fontSize=14";
document.cookie = "fontSize=16";
document.cookie = "fontColor=black";

document.cookie; // fontSize=16;fontColor=black

1.3 可选属性:

除了Cookie本身的内容,还有一些可选的属性也是可以写入的,定义cookie的设定/更新,跟着一个分号以作分隔:

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 (例如一年为606024*365)

     (4) expires=date-in-GMTString-format 如果没有定义,cookie会在对话结束时过期。这个值的格式参见Date.toUTCString() 。

     (5) secure (cookie只通过https协议传输) cookie的值字符串可以用encodeURIComponent()来保证它不包含任何逗号、分号或空格(cookie值中禁止使用这些值)。

二. cookie的接口封装:

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

  // 获取cookie
  getItem: function(name) {
     var arr=document.cookie.replace(/\s/g, "").split(';');
     for(var i=0;i<arr.length;i++) {
       var tempArr=arr[i].split('=');
       if(tempArr[0]==name) {
        return decodeURIComponent(tempArr[1]);
       }
     }
     return '';
  },

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

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

  // 获取全部的cookie列表
  getAllItems: function() {
    var cookieArr = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
    for (var nIdx = 0; nIdx < cookieArr.length; nIdx++) { cookieArr[nIdx] = decodeURIComponent(cookieArr[nIdx]); }
    return cookieArr;
  }
};

总结

以上就是JavaScript中cookie工具函数封装的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
点击广告后才能获得下载地址
Oct 26 Javascript
自己实现ajax封装示例分享
Apr 01 Javascript
Json实现异步请求提交评论无需跳转其他页面
Oct 11 Javascript
javascript 内置对象及常见API详细介绍
Nov 01 Javascript
javaScript 连接打印机,打印小票的实例
Dec 29 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
Jan 25 Javascript
浅谈Vue内置component组件的应用场景
Mar 27 Javascript
JavaScript类的继承操作实例总结
Dec 20 Javascript
JS实现纵向轮播图(初级版)
Jan 18 Javascript
vue+ts下对axios的封装实现
Feb 18 Javascript
js实现全选和全不选功能
Jul 28 Javascript
vue使用require.context实现动态注册路由
Dec 25 Vue.js
深入理解JS中的Function.prototype.bind()方法
Oct 11 #Javascript
Bootstrap轮播插件使用代码
Oct 11 #Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 #Javascript
JavaScript获取URL中参数querystring的方法详解
Oct 11 #Javascript
JS实现表单验证功能(验证手机号是否存在,验证码倒计时)
Oct 11 #Javascript
Node.js的环境安装配置(使用nvm方式)
Oct 11 #Javascript
javascript 动态样式添加的简单实现
Oct 11 #Javascript
You might like
PHP开发文件系统实例讲解
2006/10/09 PHP
PHP垃圾回收机制简单说明
2010/07/22 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
jQuery实现手势解锁密码特效
2017/08/14 jQuery
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
vue+layui实现select动态加载后台数据的例子
2019/09/20 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
Python实现建立SSH连接的方法
2015/06/03 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
使用Python读取大文件的方法
2018/02/11 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
学习Django知识点分享
2019/09/11 Python
大学生实习思想汇报
2014/01/12 职场文书
小学生防溺水广播稿
2014/01/12 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
为什么RedisCluster设计成16384个槽
2021/09/25 Redis