浏览器中,使用JavaScript操作cookie的两个工具函数。

设置cookie值, 必须的参数是name和value,可选参数是过期天数和域名。

// 设置cookie值(key,value,过期天数,域名)
function setCookie(cookieName, cookieValue, expiredays, domain){
// 0 比较特殊
if(0 === cookieValue){
cookieValue = 0;
} else if(!cookieValue){
cookieValue = "";
}
// 编码
cookieValue = encodeURIComponent(cookieValue);
//获取cookie字符串
var cookieStr= cookieName + "=" + cookieValue;

// 过期时间
if(expiredays && !isNaN(expiredays)){
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
cookieStr += "; expires="+exdate.toGMTString();
}
// 域名
//domain = domain || document.domain;
if(domain){
cookieStr += "; path=" + "/";
cookieStr += "; domain="+domain;
}

// 保存本地 cookie
document.cookie = cookieStr;

// 返回设置后的值
return cookieValue;
};

获取cookie值,只需要一个name,过期时间和域名浏览器会自己管理,有效的cookie也只能获取到名称和值。

// 获取cookie值(key)
function getCookie(cookieName){
//获取cookie字符串
var strCookie=document.cookie;
//将多cookie切割为多个名/值对
var arrCookie=strCookie.split("; ");
var cookieValue = null;
//遍历cookie数组,处理每个cookie对
for(var i=0;i<arrCookie.length;i++){
var arr=arrCookie[i].split("=");
//找到cookie,并返回它的值
if(cookieName==arr[0]){
cookieValue=(arr[1]);
break;
}
}
//
if(!cookieValue){
cookieValue = "";
}
cookieValue = decodeURIComponent(cookieValue);
//
return cookieValue;
};

如果要删除一个cookie要怎么做?JS是没有这个API的,根据上面我们学到的知识,过期的cookie就相当于被删除了。

示例如下

setCookie("user", "renfufei");// "renfufei"
getCookie("user");// "renfufei"
setCookie("user", "renfufei", -1);// "renfufei"
getCookie("user");// ""

感谢: 太空飞猪

欢迎加入: ​​CNC开源组件开发交流群 316630025​

日期: 2016年1月7日