作者:扬帆900 | 来源:互联网 | 2021-09-24 03:30
本文章记录本人在学习 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
如何使用
写入COOKIE信息:
// 简单写入一条 COOKIE 信息
COOKIE("user", "baidu");
// 写入一条 COOKIE 信息,并且设置更多选项
COOKIE("user", "baidu", {
expires: 10, // 有效期为 10 天
path: "/", // 整个站点有效
domain: "www.baidu.com", // 有效域名
secure: true // 加密数据传输
});
2.读取COOKIE信息:
3.删除COOKIE信息:
再给大家分享一个封装好的代码
//向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
最后,如果文章有什么错误和疑问的地方,请指出。与sf各位共勉!