本文實例講述了javascript針對cookie的基本操作。分享給大家供大家參考,具體如下:
js被C#、JAVA等開發者視為聲名狼藉的附屬編程語言是有道理的,比如說,對cookie的操作。js就沒有一套類似C#的現成處理方案,而只能由你自己去完成。下面我就將自己學習的用面向對象的思想對cookie進行處理的學習筆記整理一下,以飨讀者。
cookie的常見操作分析:
(1)設置cookie 包括了添加和修改功能,事實上如果原有cookie 名稱已經存在,那麼添加此cookie 就相當於修改了此cookie。在設置cookie 的時候可能還會有一些可選項,用於指cookie 的聲明周期、訪問路徑以及訪問域和安全性等等。為了讓cookie 中能夠存儲中文,該方法中還需要對存儲的值進行編碼。
(2)取一個cookie的值,該方法接收cookie 名稱為參數,返回該cookie 的值。因為在存儲該值的時候已經進行了編碼,所以取值時應該能自動解碼,然後返回(這裡其實可以自己設置返回什麼,而不單單是"取一個值"而已)。
(3)刪除一個cookie,刪除cookie 只需將一個cookie 的過期事件設置為過去的一個時間即可,它接收一個cookie 的名稱為參數,從而刪除此cookie(我的實現還將cookie名稱設置為空,這是考慮到今後可能會有多個cookie要設置的時候,名稱發生沖突的情況)。
(4)其他 (這裡讓讀者自己去考慮其他的操作,不贅述了。)
好的,你一定又猜到我要說什麼了,對頭,code is cheap.看代碼:
/* 對cookie的操作 */ //創建 var Cookie = new Object(); //設置(修改)屬性和方法 Cookie.setCookie = function(sName, sValue, oExpires, sPath, sDomain, bSecure) { var sCookie = sName + "=" + escape(sValue); // 名稱和值 if (oExpires) { sCookie += "; expires=" + oExpires.toGMTString(); // 過期時間 } if (sPath) { sCookie += "; path=" + sPath; // 訪問路徑 } if (sDomain) { sCookie += "; domain=" + sDomain; // 訪問路徑 } if (bSecure) { sCookie += "; true"; // 安全性 } document.cookie = sCookie; } //獲取 Cookie.getCookie = function(sName) { var cookieArray = document.cookie.split(";"); //得到分割的名值對 var tempCookie = new Object(); for (var i = 0; i < cookieArray.length; i++) { var tempArr = cookieArray[i].split("="); //將名稱和值分開 if (tempArr[0] == sName) { //如果是指定的cookie,返回它的值 return unescape(tempArr[1]); } } return "There's no such a cookie name!"; } //刪除 Cookie.deleteCookie = function(sName, sPath, sDomain) { var sCookie = sName + "=; expires=" + (new Date(0)).toGMTString(); // 設置名稱為空,過期時間為0,也可以設置過期時間為負數 (var sCookie = sName + "=; expires=-1"; ) if (sPath) { sCookie += "; path=" + sPath; } if (sDomain) { sCookie += "; domain=" + sDomain; } document.cookie = sCookie; } function test() { Cookie.setCookie("test", "cookieTest"); alert(Cookie.getCookie("test")); alert(Cookie.getCookie("test2")); // ??? Cookie.deleteCookie("test"); alert(Cookie.getCookie("test")); }
補充:javascript 操作cookie類
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; } }
用法:
一、設置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");
希望本文所述對大家JavaScript程序設計有所幫助。