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.看代碼:
Code
/* 對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"));
}
最後推薦一篇更好用的cookie操作類的博文,比起下面這位博主的cookie操作類,我這個只能當作初學者稚嫩的入門介紹。詳情點擊:
http://www.cnblogs.com/birdshover/archive/2008/07/15/1243007.html。