W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
Cookies 用于存儲 web 頁面的用戶信息。
由于 JavaScript 是運(yùn)行在客戶端的腳本,所以可以使用JavaScript來設(shè)置運(yùn)行在客戶端的Cookies。
Cookies 是一些數(shù)據(jù), 存儲于你電腦上的文本文件中。
當(dāng) web 服務(wù)器向?yàn)g覽器發(fā)送 web 頁面時,在連接關(guān)閉后,服務(wù)端不會記錄用戶的信息。
Cookies 的作用就是用于解決 "如何記錄客戶端的用戶信息":
Cookies 以名/值對形式存儲,如下所示:
username=John Doe
當(dāng)瀏覽器從服務(wù)器上請求 web 頁面時, 屬于該頁面的 cookies 會被添加到該請求中。服務(wù)端通過這種方式來獲取用戶的信息。
JavaScript 可以使用 document.cookie 屬性來創(chuàng)建 、讀取、及刪除 cookies。
JavaScript 中,創(chuàng)建 cookie 如下所示:
document.cookie="username=John Doe";
您還可以為 cookie 添加一個過期時間(以 UTC 或 GMT 時間)。默認(rèn)情況下,cookie 在瀏覽器關(guān)閉時刪除:
document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 GMT";
您可以使用 path 參數(shù)告訴瀏覽器 cookie 的路徑。默認(rèn)情況下,cookie 屬于當(dāng)前頁面。
document.cookie="username=John Doe; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/";
在 JavaScript 中, 可以使用以下代碼來讀取 cookies:
var x = document.cookie;
![]() |
document.cookie 將以字符串的方式返回所有的 cookies,類型格式: cookie1=value; cookie2=value; cookie3=value; |
---|
在 JavaScript 中,修改 cookies 類似于創(chuàng)建 cookies,如下所示:
document.cookie="username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/";
舊的 cookie 將被覆蓋。
刪除 cookie 非常簡單。您只需要設(shè)置 expires 參數(shù)為以前的時間即可,如下所示,設(shè)置為 Thu, 01 Jan 1970 00:00:00 GMT:
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
注意,當(dāng)您刪除時不必指定 cookie 的值。
document.cookie 屬性看起來像一個普通的文本字符串,其實(shí)它不是。
即使您在 document.cookie 中寫入一個完整的 cookie 字符串, 當(dāng)您重新讀取該 cookie 信息時,cookie 信息是以名/值對的形式展示的。
如果您設(shè)置了新的 cookie,舊的 cookie 不會被覆蓋。 新 cookie 將添加到 document.cookie 中,所以如果您重新讀取document.cookie,您將獲得如下所示的數(shù)據(jù):
cookie1=value; cookie2=value;
如果您需要查找一個指定 cookie 值,您必須創(chuàng)建一個JavaScript 函數(shù)在 cookie 字符串中查找 cookie 值。
在以下實(shí)例中,我們將創(chuàng)建 cookie 來存儲訪問者名稱。
首先,訪問者訪問 web 頁面, 他將被要求填寫自己的名字。該名字會存儲在 cookie 中。
訪問者下一次訪問頁面時,他會看到一個歡迎的消息。
在這個實(shí)例中我們會創(chuàng)建 3 個 JavaScript 函數(shù):
首先,我們創(chuàng)建一個函數(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;
}
函數(shù)解析:
以上的函數(shù)參數(shù)中,cookie 的名稱為 cname,cookie 的值為 cvalue,并設(shè)置了 cookie 的過期時間 expires。
該函數(shù)設(shè)置了 cookie 名、cookie 值、cookie過期時間。
然后,我們創(chuàng)建一個函數(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 "";
}
函數(shù)解析:
cookie 名的參數(shù)為 cname。
創(chuàng)建一個文本變量用于檢索指定 cookie :cname + "="。
使用分號來分割 document.cookie 字符串,并將分割后的字符串?dāng)?shù)組賦值給 ca (ca = document.cookie.split(';'))。
循環(huán) ca 數(shù)組 (i=0;i<ca.length;i++),然后讀取數(shù)組中的每個值,并去除前后空格 (c=ca[i].trim())。
如果找到 cookie(c.indexOf(name) == 0),返回 cookie 的值 (c.substring(name.length,c.length)。
如果沒有找到 cookie, 返回 ""。
最后,我們可以創(chuàng)建一個檢測 cookie 是否創(chuàng)建的函數(shù)。
如果設(shè)置了 cookie,將顯示一個問候信息。
如果沒有設(shè)置 cookie,將會顯示一個彈窗用于詢問訪問者的名字,并調(diào)用 setCookie 函數(shù)將訪問者的名字存儲 365 天:
function checkCookie(){
var username=getCookie("username");
if (username!=""){
alert("Welcome again " + username);
}
else{
username = prompt("Please enter your name:","");
if (username!="" && username!=null){
setCookie("username",username,365);
}
}
}
以下實(shí)例在頁面載入時執(zhí)行 checkCookie() 函數(shù)。
JavaScript筆記:JavaScript操作Cookies
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: