Cookie
操作Cookie函数
Source
/*
名称:Cookie函数
*/
var HL = HL || {};
HL.Cookie = {
/*
函数名称:HL.Cookie.Get([string name])
函数功能:得到Cookie
参数:name 可选项,要取得的Cookie名称
说明:name为空时将通过数组形式返回全部Cookie,name不为空时返回此Cookie名称的值,没有任何值时返回undefined
*/
Get: function (name) {
var cv = document.cookie.split("; ");//使用"; "分割Cookie
var cva = [], temp;
/*循环的得到Cookie名称与值*/
for (i = 0; i < cv.length; i++) {
temp = cv[i].split("=");//用"="分割Cookie的名称与值
cva[temp[0]] = unescape(temp[1]);//unescape() 函数可对通过 escape() 编码的字符串进行解码。
}
if (name) return cva[name];//如果有name则输出这个name的Cookie值
else return cva;//如果没有name则输出以名称为key,值为Value的数组
},
/*
函数名称:HL.Cookie.Set(string name, string value[, int expires[, string path[, string domain[, string secure]]]])
函数功能:存入Cookie
参数:name 必要项,要存入的Cookie名称
value 必要项,要存入的Cookie名称对应的值
expires 可选项,Cookie的过期时间,可以填入以秒为单位的保存时间,也可以填入日期格式(YYYY-MM-DD HH:MM:SS)的到期时间
path 可选项,Cookie在服务器端的有效路径
domain 可选项,该Cookie的有效域名
secure 可选项, 指明Cookie 是否仅通过安全的 HTTPS 连接传送,0或false或空时为假
说明:保存成功则返回true,保存失败返回false
*/
Set: function (name, value, expires, path, domain, secure) {
//alert("0:" + expires);
if (!name || !value) return false;//如果没有name和value则返回false
if (name == "" || value == "") return false;//如果name和value为空则返回false
/*对于过期时间的处理*/
if (expires) {
/*如果是数字则换算成GMT时间,当前时间加上以秒为单位的expires*/
if (/^[0-9]+$/.test(expires)) {
var today = new Date();
expires = new Date(today.getTime() + expires * 1000).toGMTString();
/*判断expires格式是否正确,不正确则赋值为undefined*/
/*日期时间检查,格式为:YYYY-MM-DD HH:MM:SS*/
} else if (!(/^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/).test(expires)) {
//else if (!(/^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/).test(expires)) {//(YYYY-MM-DD HH:MM:SS)
//else if (!/^wed, /d{2} /w{3} /d{4} /d{2}/:/d{2}/:/d{2} GMT$/.test(expires)){//(wdy, DD-Mon-YYYY HH:MM:SS GMT)
expires = undefined;
//alert("1:" + expires);
} else {
expires = new Date(expires).toGMTString();
//alert("2:" + expires);
}
}
/*合并cookie的相关值*/
var cv = name + "=" + escape(value) + ";"//escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
+ ((expires) ? " expires=" + expires + ";" : "")
+ ((path) ? "path=" + path + ";" : "")
+ ((domain) ? "domain=" + domain + ";" : "")
+ ((secure && secure != 0) ? "secure" : "");
/*判断Cookie总长度是否大于4K*/
if (cv.length < 4096) {
document.cookie = cv;//写入cookie
return true;
} else {
return false;
}
},
/*
函数名称:HL.Cookie.Del(string name[, string path[, string domain]])
函数功能:删除Cookie
参数:name 必要项,要删除的Cookie名称
path 可选项,要删除的Cookie在服务器端的有效路径
domain 可选项,要删除的Cookie的有效域名
说明:删除成功返回true,删除失败返回false
*/
Del: function (name, path, domain) {
if (!name) return false;//如果没有name则返回false
if (name == "") return false;//如果name为空则返回false
if (!this.Get(name)) return false;//如果要删除的name值不存在则返回false
/*合并Cookie的相关值*/
document.cookie = name + "=;"
+ ((path) ? "path=" + path + ";" : "")
+ ((domain) ? "domain=" + domain + ";" : "")
+ "expires=Thu, 01-Jan-1970 00:00:01 GMT;";
return true;
}
}
Example
HL.Cookie.Set("color", "red", "2017-06-29 16:35:10");
var color = HL.Cookie.Get("color");