Posted in Javascript onOctober 16, 2010
用法:
一、设置cookie
var cookie = new JSCookie(); // 普通设置 cookie .SetCookie("key1","val1"); // 过期时间为一年 var expire_time = new Date(); expire_time.setFullYear(expire_time.getFullYear() + 1); cookie .SetCookie("key2","val2",expire_time); // 设置域及路径,带过期时间 cookie .SetCookie("key3","val3",expire_time,".cnblogs.com","/"); // 设置带子键的cookie,子键分别是k1,k2,k3 cookie .SetCookie("key4","k1=1&k2=2&k3=3");
二、读取cookie
// 简单获取 cookie .GetCookie("key1"); cookie .GetCookie("key2"); cookie .GetCookie("key3"); cookie .GetCookie("key4"); // 获取key4的子键k1值 cookie .GetChild("key4","k1");
三、删除
cookie .Expire("key1"); cookie .Expire("key2"); cookie .Expire("key3"); cookie .Expire("key4");
示例:
<script type="text/javascript"> String.prototype.Trim = function() { return this.replace(/^\s+/g,"").replace(/\s+$/g,""); } function JSCookie() { this.GetCookie = function(key) { var cookie = document.cookie; var cookieArray = cookie.split(';'); var getvalue = ""; for(var i = 0;i<cookieArray.length;i++) { if(cookieArray[i].Trim().substr(0,key.length) == key) { getvalue = cookieArray[i].Trim().substr(key.length + 1); break; } } return getvalue; }; this.GetChild = function(cookiekey,childkey) { var child = this.GetCookie(cookiekey); var childs = child.split('&'); var getvalue = ""; for(var i = 0;i < childs.length;i++) { if(childs[i].Trim().substr(0,childkey.length) == childkey) { getvalue = childs[i].Trim().substr(childkey.length + 1); break; } } return getvalue; }; this.SetCookie = function(key,value,expire,domain,path) { var cookie = ""; if(key != null && value != null) cookie += key + "=" + value + ";"; if(expire != null) cookie += "expires=" + expire.toGMTString() + ";"; if(domain != null) cookie += "domain=" + domain + ";"; if(path != null) cookie += "path=" + path + ";"; document.cookie = cookie; }; this.Expire = function(key) { expire_time = new Date(); expire_time.setFullYear(expire_time.getFullYear() - 1); var cookie = " " + key + "=e;expires=" + expire_time + ";" document.cookie = cookie; } } </script>
用正则的方法读取cookie值
由于asp的cookie是经过url编码的,所以读之前要unescape一下。
下面是我用正则的方法取cookie,包括单值和多值:
/************************************************** 参数说明: sMainName Cookie名 sSubName Cookie子键名,留空表示单值Cookie **************************************************/ function GetCookie(sMainName, sSubName) { var re = new RegExp((sSubName ? sMainName + "=(?:.*?&)*?" + sSubName + "=([^&;$]*)" : sMainName + "=([^;$]*)"),"i"); return re.test(unescape(document.cookie)) ? RegExp["$1"] : ""; }
Javascript读取cookie函数代码
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@