JS读写客户端Cookies

把前一陈子写的一段JS发出来,代码很简单,但希望对一些人有帮助。少写几行重复的代码

CookiesHelper.js

//Author:fengxu
//Date:2009-08-18
//Summary:读写Cookies
//
CookiesHelper = function() {
var d = new Date()
d.setDate(d.getDate() + 15);
this.expriceDate = d.toUTCString();             //设置过期时间
this.unDesCodeValue = document.cookie;          //未解码的Cookies值
this.cookies = new Array();  //cookies对象
if (this.unDesCodeValue != '' && this.unDesCodeValue != null) {
var tempArr = this.unDesCodeValue.split(';'); //将cookies对象分开
for (var i = 0; i < tempArr.length; i++) {
var arrCookItem;
if (tempArr[i].split('=').length > 2)        //如果cookie项有子cookies值,暂时不支持asp.net的写法Response.Cookies["Name"]["Key"]
{
//                arrCookItem = new Array();
//                arrCookItem.push(tempArr[i].substring(0, tempArr[i].indexOf('=') - 1));
//                arrCookItem.push(tempArr[i].substring(tempArr[i].indexOf('='), tempArr[i.length-1]).split('&'))
//                arrCookItem[0] = decodeURIComponent(arrCookItem[0]);  //解码名称和值
}
else {
arrCookItem = tempArr[i].split('=');   //将cookies名称和值分开
arrCookItem[0] = decodeURIComponent(arrCookItem[0]);  //解码名称和值
arrCookItem[1] = decodeURIComponent(arrCookItem[1]);
this.cookies.push(arrCookItem);        //得到一个二维数组,对应cookies值
}
}
}
}
//取cookies值
CookiesHelper.prototype.GetCookieValue = function(cookName) {
if (null == this.cookies) return '';
var name;
var value;
var arrTemp;
for (var i = 0; i < this.cookies.length; i++) {
arrTemp = this.cookies[i];
name = arrTemp[0];
value = arrTemp[1];
if (name == cookName)
return value;
}
return null;
}
CookiesHelper.prototype.SetCookiesValue = function(cookName, cookValue) {
var name;
var value;
var arrTemp;
var isAdd = true;  //判断是否是添加新Cookies值
for (var i = 0; i < this.cookies.length; i++) {
arrTemp = this.cookies[i];
name = arrTemp[0];
value = arrTemp[1];
if (name == cookName) {
this.cookies[i][1] = cookValue;     //如果有则修改;
document.cookie = cookName + '=' + encodeURIComponent(cookValue) + "; expires=" + this.expriceDate + "";
isAdd = false;
break;
}
}
if (isAdd) {
var newCookie = new Array();            //如果没有则添加;
newCookie.push(cookName);
newCookie.push(cookValue);
this.cookies.push(newCookie);
document.cookie = cookName + '=' + encodeURIComponent(cookValue) + "; expires=" + this.expriceDate + "";
}
}
CookiesHelper.prototype.AddCookie = function(cookName, cookValue) {
this.SetCookiesValue(cookName, cookValue);
}
//删除cookie
CookiesHelper.prototype.DeleteCookie = function(cookieName) {
if (this.cookies.length == 0)
return;
else {
var d = new Date();
d.setDate(d.getDate() - 1);
var realCookies = '';
var documentCookie = new Array();       //删除时要更新数组
for (var i = 0; i < this.cookies.length; i++) {
arrTemp = this.cookies[i];
name = arrTemp[0];
value = arrTemp[1];
if (name.replace(/\s/g,'') == (cookieName)) {
realCookies += name + '=' + encodeURIComponent(value) + "; expires=" + d.toGMTString() + "";
break;
}
else {
var tempArr = new Array();
tempArr.push(name);
tempArr.push(value);
documentCookie.push(tempArr);
//                realCookies += encodeURIComponent(name) + '=';
//                realCookies += encodeURIComponent(value);
//                realCookies += "; expires=" + this.expriceDate + ";";
}
}
this.cookies = documentCookie;
alert(realCookies);
document.cookie = realCookies;
}
}
var cookieHelper = new CookiesHelper();
CookiesHelper.prototype.DeCodeCookieValue = function() {
//    this.desCodeValue = decodeURIComponent(this.cookies)
}
//CookiesHelper.registerClass('CookiesHelper');
//if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
使用方法:
    <script language="javascript" type="text/javascript">
//写CookieS
cookieHelper.SetCookiesValue(CookieName,CookieValue);
//读Cookies
var cookieValue = cookieHelper.GetCookieValue(CookieName);
//删除
cookieHelper.DeleteCookie(CookieName);
</script>

曾经年少多少事 而今皆付谈笑中!

原文地址:https://www.cnblogs.com/xuf22/p/1665367.html