javascript針對(duì)cookie的基本操作實(shí)例詳解
本文實(shí)例講述了javascript針對(duì)cookie的基本操作。分享給大家供大家參考,具體如下:
js被C#、JAVA等開(kāi)發(fā)者視為聲名狼藉的附屬編程語(yǔ)言是有道理的,比如說(shuō),對(duì)cookie的操作。js就沒(méi)有一套類似C#的現(xiàn)成處理方案,而只能由你自己去完成。下面我就將自己學(xué)習(xí)的用面向?qū)ο蟮乃枷雽?duì)cookie進(jìn)行處理的學(xué)習(xí)筆記整理一下,以饗讀者。
cookie的常見(jiàn)操作分析:
(1)設(shè)置cookie 包括了添加和修改功能,事實(shí)上如果原有cookie 名稱已經(jīng)存在,那么添加此cookie 就相當(dāng)于修改了此cookie。在設(shè)置cookie 的時(shí)候可能還會(huì)有一些可選項(xiàng),用于指cookie 的聲明周期、訪問(wèn)路徑以及訪問(wèn)域和安全性等等。為了讓cookie 中能夠存儲(chǔ)中文,該方法中還需要對(duì)存儲(chǔ)的值進(jìn)行編碼。
(2)取一個(gè)cookie的值,該方法接收cookie 名稱為參數(shù),返回該cookie 的值。因?yàn)樵诖鎯?chǔ)該值的時(shí)候已經(jīng)進(jìn)行了編碼,所以取值時(shí)應(yīng)該能自動(dòng)解碼,然后返回(這里其實(shí)可以自己設(shè)置返回什么,而不單單是"取一個(gè)值"而已)。
(3)刪除一個(gè)cookie,刪除cookie 只需將一個(gè)cookie 的過(guò)期事件設(shè)置為過(guò)去的一個(gè)時(shí)間即可,它接收一個(gè)cookie 的名稱為參數(shù),從而刪除此cookie(我的實(shí)現(xiàn)還將cookie名稱設(shè)置為空,這是考慮到今后可能會(huì)有多個(gè)cookie要設(shè)置的時(shí)候,名稱發(fā)生沖突的情況)。
(4)其他 (這里讓讀者自己去考慮其他的操作,不贅述了。)
好的,你一定又猜到我要說(shuō)什么了,對(duì)頭,code is cheap.看代碼:
/* 對(duì)cookie的操作 */ //創(chuàng)建 var Cookie = new Object(); //設(shè)置(修改)屬性和方法 Cookie.setCookie = function(sName, sValue, oExpires, sPath, sDomain, bSecure) { var sCookie = sName + "=" + escape(sValue); // 名稱和值 if (oExpires) { sCookie += "; expires=" + oExpires.toGMTString(); // 過(guò)期時(shí)間 } if (sPath) { sCookie += "; path=" + sPath; // 訪問(wèn)路徑 } if (sDomain) { sCookie += "; domain=" + sDomain; // 訪問(wèn)路徑 } if (bSecure) { sCookie += "; true"; // 安全性 } document.cookie = sCookie; } //獲取 Cookie.getCookie = function(sName) { var cookieArray = document.cookie.split(";"); //得到分割的名值對(duì) var tempCookie = new Object(); for (var i = 0; i < cookieArray.length; i++) { var tempArr = cookieArray[i].split("="); //將名稱和值分開(kāi) 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(); // 設(shè)置名稱為空,過(guò)期時(shí)間為0,也可以設(shè)置過(guò)期時(shí)間為負(fù)數(shù) (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")); }
補(bǔ)充: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; } }
用法:
一、設(shè)置cookie
var cookie = new JSCookie(); //普通設(shè)置 cookie .SetCookie("key1","val1"); //過(guò)期時(shí)間為一年 var expire_time = new Date(); expire_time.setFullYear(expire_time.getFullYear() + 1); cookie .SetCookie("key2","val2",expire_time); //設(shè)置域及路徑,帶過(guò)期時(shí)間 cookie .SetCookie("key3","val3",expire_time,".cnblogs.com","/"); //設(shè)置帶子鍵的cookie,子鍵分別是k1,k2,k3 cookie .SetCookie("key4","k1=1&k2=2&k3=3");
二、讀取cookie
//簡(jiǎn)單獲取 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");
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JavaScript實(shí)現(xiàn)cookie的寫(xiě)入、讀取、刪除功能
- javascript封裝 Cookie 應(yīng)用接口
- JavaScript對(duì)Cookie進(jìn)行讀寫(xiě)操作實(shí)例
- JavaScript中Cookies的相關(guān)使用教程
- javascript實(shí)現(xiàn)設(shè)置、獲取和刪除Cookie的方法
- JavaScript操作Cookie方法實(shí)例分析
- JavaScript使用cookie實(shí)現(xiàn)記住賬號(hào)密碼功能
- JavaScript實(shí)現(xiàn)基于Cookie的存儲(chǔ)類實(shí)例
- JavaScript操作cookie類實(shí)例
- javascript操作Cookie(設(shè)置、讀取、刪除)方法詳解
相關(guān)文章
一個(gè)JavaScript處理textarea中的字符成每一行實(shí)例
這篇文章主要與大家分享一個(gè)JavaScript處理textarea中的字符成每一行實(shí)例,很簡(jiǎn)單,但很實(shí)用,大家可以看看2014-09-09js實(shí)現(xiàn)簡(jiǎn)單秒表走動(dòng)的時(shí)鐘特效
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)單秒表走動(dòng)的時(shí)鐘特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08最簡(jiǎn)單的JavaScript圖片輪播代碼(兩種方法)
基于javascript代碼實(shí)現(xiàn)最簡(jiǎn)單的圖片輪播效果,非常簡(jiǎn)單,本文通過(guò)兩種方式給大家介紹最簡(jiǎn)單的圖片輪播,感興趣的朋友一起學(xué)習(xí)吧2015-12-12解決微信小程序scroll-view組件無(wú)橫向滾動(dòng)的問(wèn)題
這篇文章主要介紹了微信小程序scroll-view組件無(wú)橫向滾動(dòng)的解決方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02IE與Firefox在JavaScript上的7個(gè)不同寫(xiě)法小結(jié)
盡管那需要用長(zhǎng)串的、沉悶的不同分支代碼來(lái)應(yīng)付不同瀏覽器的日子已經(jīng)過(guò)去,偶爾還是有必要做一些簡(jiǎn)單的區(qū)分和目標(biāo)檢測(cè)來(lái)確保某塊代碼能在用戶的機(jī)器上正常運(yùn)行。2009-09-09js中繼承的幾種用法總結(jié)(apply,call,prototype)
本篇文章主要介紹了js中繼承的幾種用法總結(jié)(apply,call,prototype) 需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12javascript中String類的subString()方法和slice()方法
最近在看《Javascript高級(jí)程序設(shè)計(jì)》一書(shū),在書(shū)中發(fā)現(xiàn)一些以前沒(méi)有接觸過(guò)的且比較實(shí)用的技巧和知識(shí)點(diǎn),想通過(guò)博客記錄一下,以加深記憶。2011-05-05