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 相关文章推荐
一步一步教你写一个jQuery的插件教程(Plugin)
Sep 03 Javascript
js的一些常用方法小结
Jun 29 Javascript
代码触发js事件(click、change)示例应用
Dec 13 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
Oct 14 Javascript
Jquery 实现grid绑定模板
Jan 28 Javascript
浅谈JavaScript的自动垃圾收集机制
Dec 15 Javascript
vue cli使用绝对路径引用图片问题的解决
Dec 06 Javascript
Vue实现active点击切换方法
Mar 16 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
react native 原生模块桥接的简单说明小结
Feb 26 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
Mar 04 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 Javascript
深入理解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+MYSQL 出现乱码的解决方法
2008/08/08 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
用python处理图片实现图像中的像素访问
2018/05/04 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
远程调用的原理
2014/07/05 面试题
高中生的自我评价
2014/03/04 职场文书
喜之郎果冻广告词
2014/03/20 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
品质保证书格式
2015/02/28 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
深度学习小工程练习之垃圾分类详解
2021/04/14 Python
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android