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 对象中的类数组操作
Apr 27 Javascript
javascript 对象比较实现代码
Apr 27 Javascript
基于Jquery与WebMethod投票功能实现代码
Jan 19 Javascript
JavaScript中清空数组的三种方法分享
Apr 07 Javascript
用C/C++来实现 Node.js 的模块(一)
Sep 24 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
May 20 Javascript
javascript排序函数实现数字排序
Jun 26 Javascript
Angular2从搭建环境到开发步骤详解
Oct 17 Javascript
bootstrap提示标签、提示框实现代码
Dec 28 Javascript
微信小程序 页面跳转如何实现传值
Apr 05 Javascript
利用10行js代码实现上下滚动公告效果
Dec 08 Javascript
使用p5.js临摹动态图形
Oct 23 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中output_buffering
2015/07/13 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
基于js 本地存储(详解)
2017/08/16 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
python中map()函数的使用方法示例
2017/09/29 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
tensorflow实现简单的卷积神经网络
2018/05/24 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
室内设计自我鉴定
2013/10/15 职场文书
初三新学期计划书
2014/05/03 职场文书
投标保密承诺书
2014/05/19 职场文书
小浪底导游词
2015/02/12 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL