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
0
投稿
猜你喜欢
- 本章给大家在项目使用时候,常见的一种情况解决案例,即是当我们调用多个线程,使用了同一个函数去处理数据的时候,有些用函数已经处理完成,但是有些
- 本文实例为大家分享了python Tkinter版学生管理的具体代码,供大家参考,具体内容如下Tkinter是python自带的UI包,无需
- 在生产环境上,一般会使用比较健壮的Web服务器,如Apache来运行我们的应用。如果我们的Web应用是采用Python开发,而且符合WSGI
- Protocol Buffers (类似XML的一种数据描述语言)最新版本2.3里,protoc—py_out命令只生成原生的P
- 简介Pycharm安装以后必须激活后,才能正常的使用。否则就不能使用。【激活码激活】修改hosts文件添加下面一行到hosts文件,目的是屏
- 如何一行行地读取文件?这样就可以做到一行行地读出了:dim input(30) ' 定义一个数组,大小
- 一、数据集小企鹅数据集,提取码:1234该数据集一共包含8个变量,其中7个特征变量,1个目标分类变量。共有150个样本,目标变量为 企鹅的类
- 1.怎么样查看数据库字符集 [A]数据库服务器字符集select * from nls_database_parameters,其来源于pr
- 先看看CSS框架的利与弊前段时间一直在讨论CSS框架。很多朋友看了那三篇文章后提了不少自己意见。特别是一位北京的朋友A君,他有一个小的团体,
- 如何通过表单创建一个Word?举个例子吧,我们先创建一个表单文件docform.htm,再用ASP程序(doccreate.asp)来处理表
- 背景:在pycharm中运行正常,但是使用命令方式就提示没有模块解决方案在Python安装目录下的\Lib\site-packages文件夹
- 一、概述一个gRPC服务的大体结构图为:图一表明,grpc的服务是跨语言的,但需要遵循相同的协议(proto)。相比于REST服务,gPRC
- sql server中变量要先申明后赋值:局部变量用一个@标识,全局变量用两个@(常用的全局变量一般都是已经定义好的);申明局部变量语法:d
- 迭代器是一种支持next()操作的对象。它包含一组元素,当执行next()操作时,返回其中一个元素;当所有元素都被返回后,生成一个StopI
- 一、JSP EL语言定义 E L(Expression
- 1.open使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件。fi
- 本文主要介绍了OpenCV全景图像拼接的实现示例,分享给大家,具体如下:left_01.jpgright_01.jpgStitcher.py
- 本文实例为大家分享了js实现滑动进度条效果的具体代码,供大家参考,具体内容如下进度条:<!DOCTYPE html><ht
- 如何用OdbcRegTool组件来创建一个数据源?OdbcRegTool是一个免费组件,在服务器上安装后,就可以来创建一个数据源:<h
- 由于数据库中的每张表中的字段名不一样,所以在写后台程序的时候,通常会写多个页面,对应不同的表。这里介绍一个函数,适合所有的表,不需要再为每一