JavaScript中cookie工具函数封装的示例代码
作者:子匠_Zijor 发布时间:2024-04-25 13:16:01
标签:javascript,cookie,封装
一. 语法
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;
}
};
来源:http://www.dengzhr.com/js/1053


猜你喜欢
- 前言docopt 是一个开源的库,代码地址:https://github.com/docopt/docopt。它在 README 中就已经做
- 神经网络的逻辑应该都是熟知的了,在这里想说明一下交叉验证交叉验证方法:看图大概就能理解了,大致就是先将数据集分成K份,对这K份中每一份都取不
- 前言相信大家都玩过斗地主,规则就不再介绍了。直接上一张朋友圈看到的残局图:这道题我刚看到时,曾尝试用手工来破解,每次都以为找到了农民的必胜策
- 写过PHP+MySQL的程序员都知道有时间差,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是
- 官方文档:【https://docker-py.readthedocs.io/en/stable/images.html】众所周知,Dock
- 元素是文档结构的基础,在CSS中,每个元素生成了一个包含了元素内容的框(box,也译为“盒子”)。但是不同的元素显示的方式会有所不同,例如&
- 很多小伙伴都会有这样的问题,说一个ip地址十分钟内之内注册一次,用来防止用户来重复注册带来不必要的麻烦逻辑:取ip,在数据库找ip是否存在,
- 本文实例为大家分享了pygame实现雷电游戏开发代码,供大家参考,具体内容如下源代码:stars.py#-*- coding=utf-8 -
- 在了解了JavaScript1.7的相关更新后,我们再继续关注JavaScript1.8的新特性。在W3C Group带来的JavaScri
- 测试函数主要是用来评估优化算法特性的,这里我用python3绘制了部分测试函数的图像。具体的测试函数可以结合 * 来了解。想要显示某个测试
- 看到有人用的PJBlog使用的是自动填写验证码,这样其实也不使用验证码基本上没有什么区别,很容易被 * ,因此在参照许多修改的基础上,找到
- 在数据传递时,需要先编解码;常用的方式是JSON编解码(参见《golang之JSON处理》)。但有时却需要读取部分字段后,才能知道具体类型,
- 使用[[v]*n]*n遇到的坑今天通过[[v]*n]*n快速创建列表, 当我使用索引修改值时, 本来是打算修改a[0][0]这一个元素的第一
- 需求:两个文件,一个文件为统计报表,里面含有手机号,另一个文件为手机号段归属地,含有手机号码前七位对应的地区。需要对统计报表进行处理,将手机
- 全球数据量的疯狂增长,使得市场对资深数据库管理员的需求也节节攀升。据统计,一直到2016美国IT市场对数据库管理员的需求量增长都将会超过所有
- 记录了mysql 8.0.12下载安装教程,分享给大家。下载下载地址如图下载以后将安装包解压到任意文件夹,我这里解压到E盘。安装1、解压以后
- 简单说明uint8与byte可以说是一样的,因为文档中有这样的定义:The Go Programming Language Specific
- 上回 说到“大屏幕浏览页面的良好体验,本就应该用户自己调整窗口。”根据屏幕不同大小,缩小窗口出横向滚动条在所难免,但理想情况下,页面应该能适
- Sublime Text 3非常实用,但是想要用好,一些快捷键不可或缺,所以转了这个快捷键汇总。用惯了vim,有些快捷键也懒得用了,尤其是在
- 写好脚本,注册好服务之后,经测试,ORACLE可以随RHEL启动而启动,但不能随系统关闭而关闭。在网上找答案,发现几乎所有的设置过程帖子都是