学习笔记——JavaScript操作Cookie

本文详细介绍了Cookie的基本组成部分,包括名称、值、过期时间等,并提供了如何设置和获取Cookie的JavaScript函数示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
关于Cookie:
	Cookie可以设置6个部分:name(名称)、value(值)、expires(过期时间)、path(路径)、domain(域)、secure(安全性)
	前两个是必须的,后4个是可选的
	名称和值:
		它们必须位于Cookie字符串的开头
		实例:
			document.cookie="UserName=Paul";
			则Cookie的名称是UserName,值是Paul
	过期时间:
		若没有设置过期时间,则在关闭页面之后,Cookie就失效
		过期时间的格式十分重要,特别是对于IE浏览器,它应该与toGMTString()方法返回的格式相同
		实例:
			document.cookie="UserName=Paul;expires=Tue, 28 Dec 2020 00:00:00 GMT;";
			或者
			var expireDate=new Date();
			expireDate.setMonth(expireDate.getMonth()+6);
			document.cookie="UserName=Paul;expires="+ expireDate.toGMTString()+";";

*/

//CookieFunction.js

function setCookie(cookieName,cookieValue,cookiePath,cookieExpires)
{
	cookieValue = escape(cookieValue);
	//由于cookie中是以;来区别几个数据的,所以在cookie内容的不能直接添加;字符的
	//为了解决这个问题,使用escape()函数,将这种特殊字符转变成:%+十六进制的ASCII 类型的值
	//比如:空格变为:%20	分号;变为:%3B
	//与之对应的,解码使用:unescape()函数
	if(cookieExpires=="")
	{
		var nowDate=new Date();
		nowDate.setMonth(nowDate.getMonth()+6);//默认添加六个月的有效期
		cookieExpires=nowDate.toGMTString();//转变成合适的时间格式
	}
	if(cookiePath!="")cookiePath=";Path="+cookiePath;
	document.cookie=cookieName+"="+cookieValue+";expires="+ cookieExpires + cookiePath;
}
function getCookieValue(cookieName)
{
	var cookieValue=document.cookie;//提取cookie字符串
	var cookieStartsAt=cookieValue.indexOf(" "+cookieName+"=");//若找不到返回-1,找到返回位置
	//这里查找" "+cookieName+"=",以免在无意间查找包含所需名称的Cookie名称或值
	//例如,假如cookie名称为:xFoo、Foo、yFoo,则查找前面不包含空格的Foo,会优先匹配xFoo
	if(cookieStartsAt==-1)cookieStartsAt=cookieValue.indexOf(cookieName+"=");
	//若是-1,则代表该cookie不存在,或者该cookie位于Cookie字符串的开头,这时Cookie名称前也不包含空格,需要重新进行一次查找
	if(cookieStartsAt==-1)cookieValue=null;
	else
	{
		cookieStartsAt=cookieValue.indexOf("=",cookieStartsAt)+1;//Cookie值的起始部分是在=号之后
		var cookieEndsAt=cookieValue.indexOf(";",cookieStartsAt);//一般是在;处结束
		if(cookieEndsAt==-1)cookieEndsAt=cookieValue.length;//若Cookie中只有名称和值时,值就位于字符串最后,没有了;间隔,所以直接用字符串长度
		cookieValue=unescape(cookieValue.substring(cookieStartsAt,cookieEndsAt));
	}
	return cookieValue;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值