JS如何对Cookie进行存值,取值和清除操作

在做项目的过程中,我们经常会对cookie进行操作。例如我们常见的存值,取值,清除指定的cookie和清除全部的cookie以及给存放的cookie设置过期时间等等。所以,根据做项目中发现的这些问题在此做个总结。


cookie中获取域名:

/**
 * cookie中获取域名
 * */ 
function GetCookieDomain() {
	var host = location.hostname;
	var ip = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
	if (ip.test(host) === true || host === 'localhost') return host;
	var regex = /([^]*).*/;
	var match = host.match(regex);
	if (typeof match !== "undefined" && null !== match) host = match[1];
	if (typeof host !== "undefined" && null !== host) {
		var strAry = host.split(".");
		if (strAry.length > 1) {
			host = strAry[strAry.length - 2] + "." + strAry[strAry.length - 1];
		}
	}
	return '.' + host;
}

cookie中存值:

/**
 * cookie中存值
 * */
function setCookie(name, value) {
	var curWwwPath=window.document.location.href;
	var pathName=window.document.location.pathname;
	var pos=curWwwPath.indexOf(pathName);
	var localhostPath=curWwwPath.substring(0,pos);	//获取地址到端口号
	var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); //项目名
		localhostPath = localhostPath.replace(/\"/g, "");
		projectName = projectName.replace(/\"/g, "");
	
	if (value) {
		var days = 1;	//定义一天
		var exp = new Date();
		exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000);
		// 写入Cookie, toGMTString将时间转换成字符串
//		document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/video_learning" + ";domain=localhost";
		document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=" + projectName + ";domain=" + GetCookieDomain();
	}
};

cookie中存值并设置过期时间:

/**
 * cookie中存值并设置过期时间
 * name名字,value值,expiredays时间
 * */
function setCookie(name, value, expiredays) {
	if (value) {
		var days = 1;	//定义一天
		var exp = new Date();
		exp.setTime(exp.getTime() + expiredays);
		// 写入Cookie, toGMTString将时间转换成字符串
		document.cookie = name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exp.toGMTString()) + ";path=/" + ";domain=localhost";
	}
};

cookie中取值:

/**
 * cookie中取值
 * */
function getCookie(name) {
	var arr,reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");	//匹配字段
	if (arr = document.cookie.match(reg)) {
		return unescape(arr[2]);
	} else {
		return null;
	}
};

清除指定cookie值:

/**
 * 清除指定cookie值
 * */
function delCookie(name) {
	var exp = new Date();
	exp.setTime(exp.getTime() - 1);
	var cval = setCookie(name);
	if (cval && cval != null) {
//		document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + ";path=/video_learning" + ";domain=localhost";
		document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + ";path=/video_learning" + ";domain=localhost";
	}
};

清除全部cookie值:

/**
 * 清除全部cookie值
 * */
function clearCookie() {
	var curWwwPath=window.document.location.href;
	var pathName=window.document.location.pathname;
	var pos=curWwwPath.indexOf(pathName);
	var localhostPath=curWwwPath.substring(0,pos);	//获取地址到端口号
	var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); //项目名
		localhostPath = localhostPath.replace(/\"/g, "");
		projectName = projectName.replace(/\"/g, "");
	
	var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
	if (keys) {
		for (var i = keys.length; i--;) {
//			document.cookie = keys[i] +'=0;expires=' + new Date( 0).toUTCString() + ";path=/video_learning" + ";domain=localhost";
//			document.cookie = keys[i] +'=0;expires=' + new Date( 0).toUTCString() + ";path=" + projectName + ";domain=" + localhostPath;
			document.cookie = keys[i] +'=0;expires=' + new Date( 0).toUTCString() + ";path=" + projectName + ";domain=" + GetCookieDomain();
		}
	}
};

cookies给网站和用户带来的好处非常多:

1、Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径。 
2、Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告 。
3、Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点。 
4、Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务 。

cookies过期时间设置方式:

cookie.setMaxAge(0);     //不记录cookie

cookie.setMaxAge(-1);     //会话级cookie,关闭浏览器失效

cookie.setMaxAge(60*60);     //过期时间为1小时

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值