栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

javascript封装 Cookie 应用接口

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

javascript封装 Cookie 应用接口

本文章记录本人在学习 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各位共勉!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/101274.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号