javascript封装 Cookie 应用接口


Posted in Javascript onAugust 07, 2015

本文章记录本人在学习 Cookie 中看书理解到的一些东西,加深记忆和并且整理记录下来,方便之后的复习。

封装函数

在默认的情况下存取Cookie是一件比较麻烦的事情。由于Cookie是通过字符串来存储信息的,所以容易导致在执行赋值运算的时需要转换读取信息的数据类型。而且Cookie信息的字符串本身就令人讨厌,在经常使用Cookie信息的 Web 应用中格外的不方便。所以需要自行的封装一个Cookie函数来提供开发效率!

定义一个函数Cookie(),这个函数能够写入指定的Cookie信息,删除指定的Cookie信息,也能够读取指定名称的Cookie值,另外,在该函数中还可以制定Cookie信息的有效期、有效路径、作用域和安全性选项设置。完整的代码:

var Cookie = function(name, value, options) {
    // 如果第二个参数存在
    if (typeof value != 'undefined') {
      options = options || {};
      if (value === null) {
        // 设置失效时间
        options.expires = -1;
      }
      var expires = '';
      // 如果存在事件参数项,并且类型为 number,或者具体的时间,那么分别设置事件
      if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
        var date;
        if (typeof options.expires == 'number') {
          date = new Date();
          date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
        } else {
          date = options.expires;
        }
        expires = '; expires=' + date.toUTCString();
      }
      var path = options.path ? '; path=' + options.path : '', // 设置路径
        domain = options.domain ? '; domain=' + options.domain : '', // 设置域 
        secure = options.secure ? '; secure' : ''; // 设置安全措施,为 true 则直接设置,否则为空

      // 把所有字符串信息都存入数组,然后调用 join() 方法转换为字符串,并写入 Cookie 信息
      document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); 
    } else { // 如果第二个参数不存在
      var CookieValue = null;
      if (document.cookie && document.cookie != '') {
        var Cookie = document.cookie.split(';');
        for (var i = 0; i < Cookies.length; i++) {
          var Cookie = (Cookie[i] || "").replace( /^\s+|\s+$/g, "");
          if (Cookie.substring(0, name.length + 1) == (name + '=')) {
            CookieValue = decodeURIComponent(Cookie.substring(name.length + 1));
            break;
          }
        }
      }
      return CookieValue;
    }
  };

如何使用

写入Cookie信息:

// 简单写入一条 Cookie 信息
cookie("user", "baidu");
// 写入一条 Cookie 信息,并且设置更多选项
cookie("user", "baidu", {
  expires: 10, // 有效期为 10 天
  path: "/", // 整个站点有效
  domain: "www.baidu.com", // 有效域名
  secure: true // 加密数据传输
});

2.读取Cookie信息:

cookie("user");

3.删除Cookie信息:

cookie("user", null);

再给大家分享一个封装好的代码

//向cookie写入数据
function writeCookie(name, value, days) {
 // 定义有效日期(cookie的有效时间)
 var expires = "";

 // 为有效日期赋值
 if (days) {
  var date = new Date();
	//设置有效期(当前时间+时间段)
  date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));//时间段为毫秒数 
  expires = "; expires=" + date.toGMTString();
 }

 // 给cookie赋值 name, value和expiration date(有效期)
 document.cookie = name + "=" + value + expires + "; path=/";
}
//读取cookie数据
function readCookie(name) {
 var searchName = name + "=";
 var cookies = document.cookie.split(';');
 for(var i=0; i < cookies.length; i++) {
  var c = cookies[i];
  while (c.charAt(0) == ' ')
   c = c.substring(1, c.length);
  if (c.indexOf(searchName) == 0)
   return c.substring(searchName.length, c.length);
 }
 return null;
}
//清楚所有的cookie
function eraseCookie(name) {
 // 将时间设置成-1将清除存储在cookie中的数据
 writeCookie(name, "", -1);
}

最后,如果文章有什么错误和疑问的地方,请指出。与sf各位共勉!

Javascript 相关文章推荐
JQuery 表单中textarea字数限制实现代码
Dec 07 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
Jul 13 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
zTree插件之多选下拉菜单实例代码
Nov 06 Javascript
JavaScript拆分字符串时产生空字符的解决方案
Sep 26 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
Apr 12 Javascript
怎么引入(调用)一个JS文件
May 26 Javascript
jQuery EasyUI 入门必看
Jun 03 Javascript
jQuery内容过滤选择器用法示例
Sep 09 Javascript
简单理解js的冒泡排序
Dec 19 Javascript
vue.js项目打包上线的图文教程
Nov 16 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
Aug 07 #Javascript
jQuery与getJson结合的用法实例
Aug 07 #Javascript
《JavaScript函数式编程》读后感
Aug 07 #Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
Aug 07 #Javascript
jquery实现先淡出再折叠收起的动画效果
Aug 07 #Javascript
C++中的string类的用法小结
Aug 07 #Javascript
Grunt入门教程(自动任务运行器)
Aug 06 #Javascript
You might like
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
PHP 程序员的调试技术小结
2009/11/15 PHP
php备份数据库类分享
2015/04/14 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python中optparser库用法实例详解
2018/01/26 Python
django模板结构优化的方法
2019/02/28 Python
python关于调用函数外的变量实例
2019/12/26 Python
快速查找Python安装路径方法
2020/02/06 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
营业员实习自我鉴定
2013/12/07 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
2015入党自荐书范文
2015/03/05 职场文书
教师学习心得体会范文
2016/01/21 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python
python基础入门之普通操作与函数(三)
2021/06/13 Python
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers