JavaScript實(shí)現(xiàn)cookie的操作
cookie 用于存儲(chǔ) web 頁(yè)面的用戶信息。
一、什么是 Cookie?
Cookie 是一些數(shù)據(jù), 存儲(chǔ)于你電腦上的文本文件中。
當(dāng) web 服務(wù)器向?yàn)g覽器發(fā)送 web 頁(yè)面時(shí),在連接關(guān)閉后,服務(wù)端不會(huì)記錄用戶的信息。
Cookie 的作用就是用于解決 "如何記錄客戶端的用戶信息":
- 當(dāng)用戶訪問(wèn) web 頁(yè)面時(shí),他的名字可以記錄在 cookie 中。
- 在用戶下一次訪問(wèn)該頁(yè)面時(shí),可以在 cookie 中讀取用戶訪問(wèn)記錄。
Cookie 以名/值對(duì)形式存儲(chǔ),如下所示:
username=John Doe
當(dāng)瀏覽器從服務(wù)器上請(qǐng)求 web 頁(yè)面時(shí), 屬于該頁(yè)面的 cookie 會(huì)被添加到該請(qǐng)求中。服務(wù)端通過(guò)這種方式來(lái)獲取用戶的信息。
二、創(chuàng)建Cookie
JavaScript 可以使用 document.cookie 屬性來(lái)創(chuàng)建 、讀取、及刪除 cookie。
JavaScript 中,創(chuàng)建 cookie 如下所示:
document.cookie="username=John Doe";
您還可以為 cookie 添加一個(gè)過(guò)期時(shí)間(以 UTC 或 GMT 時(shí)間)。默認(rèn)情況下,cookie 在瀏覽器關(guān)閉時(shí)刪除:
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT";
您可以使用 path 參數(shù)告訴瀏覽器 cookie 的路徑。默認(rèn)情況下,cookie 屬于當(dāng)前頁(yè)面。
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";
創(chuàng)建 cookie 值的函數(shù)
首先,我們創(chuàng)建一個(gè)函數(shù)用于存儲(chǔ)訪問(wèn)者的名字:
該函數(shù)設(shè)置了 cookie 名、cookie 值、cookie過(guò)期時(shí)間。
function setCookie(cname,cvalue,exdays)
{
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires; //cookie 的名稱為 cname,cookie 的值為 cvalue,并設(shè)置了 cookie 的過(guò)期時(shí)間 expires。
}調(diào)用方法:setCookie(cookie名稱,cookie數(shù)值,過(guò)期時(shí)間(天))
setCookie('sex','男', 10);三、讀取 Cookie
document.cookie 屬性看起來(lái)像一個(gè)普通的文本字符串,其實(shí)它不是。
即使您在 document.cookie 中寫(xiě)入一個(gè)完整的 cookie 字符串, 當(dāng)您重新讀取該 cookie 信息時(shí),cookie 信息是以名/值對(duì)的形式展示的。
如果您設(shè)置了新的 cookie,舊的 cookie 不會(huì)被覆蓋。 新 cookie 將添加到 document.cookie 中,所以如果您重新讀取document.cookie,您將獲得如下所示的數(shù)據(jù):
cookie1=value; cookie2=value;
在 JavaScript 中, 可以使用以下代碼來(lái)讀取 cookie:
var x = document.cookie;
讀取 cookie 值的函數(shù)
然后,我們創(chuàng)建一個(gè)函數(shù)用戶返回指定 cookie 的值:
function getCookie(cname)
{
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++)
{
var c = ca[i].trim();
if (c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return "";
}調(diào)用方法:getCookie(cookie名稱)
getCookie('username');四、修改 Cookie
在 JavaScript 中,修改 cookie 類似于創(chuàng)建 cookie,如下所示:舊的 cookie 將被覆蓋。
document.cookie="username=John Smith; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";
五、刪除 Cookie
刪除 cookie 非常簡(jiǎn)單。您只需要設(shè)置 expires 參數(shù)為以前的時(shí)間即可。如下所示,設(shè)置為 Thu, 01 Jan 1970 00:00:00 GMT:
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
注意,當(dāng)您刪除時(shí)不必指定 cookie 的值。
移除 cookie函數(shù)
function removeCookie(key) {
setCookie(key, '', -1); //cookie的過(guò)期時(shí)間設(shè)為昨天
}調(diào)用方法:removeCookie(cookie名稱)
removeCookie('age');六、判斷瀏覽器是否啟用cookie
var cookiesEnabled = (function(){
var id = new Date().getTime();
document.cookie = '__cookieprobe=' + id + ';path=/';
return (document.cookie.indexOf(id) !== -1);
})();到此這篇關(guān)于JavaScript操作Cookie的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
VB倒計(jì)時(shí)器和JS當(dāng)前時(shí)間
VB倒計(jì)時(shí)器和JS當(dāng)前時(shí)間...2006-11-11
Javascript實(shí)例教程(19) 使用HoTMetal(3)
Javascript實(shí)例教程(19) 使用HoTMetal(3)...2006-12-12
Javascript獲取窗口(容器)的大小及位置參數(shù)列舉及簡(jiǎn)要說(shuō)明
Javascript獲取窗口(容器)的大小及位置一系列的東西比較多,容易混淆,在這里列舉及簡(jiǎn)要說(shuō)明下,需要的朋友可以參考下2012-12-12
用JS實(shí)現(xiàn)一個(gè)TreeMenu效果分享
用JS實(shí)現(xiàn)一個(gè)TreeMenu效果分享,思路比較簡(jiǎn)單,但很實(shí)用2011-08-08

