JavaScript進(jìn)階教程(第二課續(xù))第1/2頁
更新時間:2007年04月06日 00:00:00 作者:
現(xiàn)在你已經(jīng)掌握了先進(jìn)的字符串處理和相關(guān)數(shù)組概念,該是我們打開神奇的cookie魔瓶的時候了.cookie是記錄訪問你的站點的人的信息,它其實駐留在用戶的硬盤上,即使用戶已經(jīng)離開你的站點,cookie在用戶的硬盤上仍然存在,如果該用戶再次返回你的站點,則該cookie就會被一起發(fā)回到你的服務(wù)器中,便于你統(tǒng)計和處理重復(fù)到訪者的信息.
下面我們看一看一個cookie應(yīng)用的典型例子,我們在一個網(wǎng)頁中設(shè)置cookie,然后通過別的網(wǎng)頁讀取它.在使用該例子的時候,想想如果沒有cookie,你如何做到這一點.
由于cookies牽扯到向用戶的硬盤寫盤和讀取信息,所以就涉及一個保密性的問題.cookie有其作用范圍以及內(nèi)在的局限性.其最重要的局限性在于:不是每個人的瀏覽器都?xì)g迎cookies.即便是用戶的瀏覽器歡迎cookies,但用戶也有可能拒絕cookies的訪問(大部分人還是歡迎的)每個域名只分配20個cookies,所以要節(jié)省著什么它們.Cookies不得大于4 KB,當(dāng)然4,000字節(jié)的容量是足夠的了.
了解了這些局限性之后我們開始學(xué)習(xí)如何設(shè)置cookies.設(shè)置一個基本的cookie很容易.你所需做的只是在一個cookie_name=value
表單中生成一個字符串,然后設(shè)置document.cookie屬性.唯一的技巧:cookie值中不能有空格,逗號或分號.好在你無需擔(dān)心這些問題,因為有一系列的函數(shù)可以幫你對cookies屬性編碼和解碼:
escape()和unescape().
下面的簡單例子中將你的姓名保存為一個cookie:
function setCookie()
{
var the_name = prompt("What's your name?","");
var the_cookie = "wm_javascript=username:" + escape(the_name);
document.cookie = the_cookie;
alert("Thanks, now go to the next page.");
}
函數(shù)中間的兩行是關(guān)鍵:
var the_cookie = "wm_javascript=username:" + escape (the_name);
如果我在提示框中輸入了"dave thau",該行代碼將生成一個字符串wm_javascript=username:dave%20thau.這就是說我將把一個名為wm_javascript的cookie保存到硬盤.該cookie的值是username:dave%20thau - 函數(shù) escape()將"dave" 和"thau"之間的空格用%20做了替換.
當(dāng)我們讀取cookie時,我們尋找名為wm_javascript的cookie,然后提取username:dave%20thau,將其用 unescape()解碼,去掉username:.
document.cookie = the_cookie;
cookie現(xiàn)在就設(shè)置好了,很簡單.
一旦你在某用戶的硬盤上設(shè)置了cookie,讀取是件很容易的事.下面是讀取cookie范例的代碼:
function readCookie()
{
var the_cookie = document.cookie;
var broken_cookie = the_cookie.split(":");
var the_name = broken_cookie[1];
var the_name = unescape(the_name);
alert("Your name is: " + the_name);
}
第1行很重要.當(dāng)你的瀏覽器打開一個網(wǎng)頁時,它調(diào)用任何和該網(wǎng)頁有關(guān)的cookie然后將其載入document.cookie屬性.
讀取cookie的技巧在于從中抽取出你需要的信息.注意在我們所設(shè)置的cookie是這樣的:wm_javascript=username:dave%20thau.在該函數(shù)第1行之后的所有用于從該cookie中提取出用戶名(username).
var broken_cookie = the_cookie.split(":");
將cookie在分號處分割成兩部分.
var the_name = broken_cookie[1];
抓取分號后面的內(nèi)容dave%20thau.
var the_name = unescape(the_name);
取消函數(shù)escape()的編碼替換.在本例中重新用空格替換了%20.
alert("Your name is: " + the_name);
顯示你的姓名.
這個例子使用的cookie只保存了很少的信息:用戶名,cookie最多可以保存多達(dá)4kb的信息。下一講里我們講要講一個復(fù)雜的例子。
下面我們看一看一個cookie應(yīng)用的典型例子,我們在一個網(wǎng)頁中設(shè)置cookie,然后通過別的網(wǎng)頁讀取它.在使用該例子的時候,想想如果沒有cookie,你如何做到這一點.
由于cookies牽扯到向用戶的硬盤寫盤和讀取信息,所以就涉及一個保密性的問題.cookie有其作用范圍以及內(nèi)在的局限性.其最重要的局限性在于:不是每個人的瀏覽器都?xì)g迎cookies.即便是用戶的瀏覽器歡迎cookies,但用戶也有可能拒絕cookies的訪問(大部分人還是歡迎的)每個域名只分配20個cookies,所以要節(jié)省著什么它們.Cookies不得大于4 KB,當(dāng)然4,000字節(jié)的容量是足夠的了.
了解了這些局限性之后我們開始學(xué)習(xí)如何設(shè)置cookies.設(shè)置一個基本的cookie很容易.你所需做的只是在一個cookie_name=value
表單中生成一個字符串,然后設(shè)置document.cookie屬性.唯一的技巧:cookie值中不能有空格,逗號或分號.好在你無需擔(dān)心這些問題,因為有一系列的函數(shù)可以幫你對cookies屬性編碼和解碼:
escape()和unescape().
下面的簡單例子中將你的姓名保存為一個cookie:
function setCookie()
{
var the_name = prompt("What's your name?","");
var the_cookie = "wm_javascript=username:" + escape(the_name);
document.cookie = the_cookie;
alert("Thanks, now go to the next page.");
}
函數(shù)中間的兩行是關(guān)鍵:
var the_cookie = "wm_javascript=username:" + escape (the_name);
如果我在提示框中輸入了"dave thau",該行代碼將生成一個字符串wm_javascript=username:dave%20thau.這就是說我將把一個名為wm_javascript的cookie保存到硬盤.該cookie的值是username:dave%20thau - 函數(shù) escape()將"dave" 和"thau"之間的空格用%20做了替換.
當(dāng)我們讀取cookie時,我們尋找名為wm_javascript的cookie,然后提取username:dave%20thau,將其用 unescape()解碼,去掉username:.
document.cookie = the_cookie;
cookie現(xiàn)在就設(shè)置好了,很簡單.
一旦你在某用戶的硬盤上設(shè)置了cookie,讀取是件很容易的事.下面是讀取cookie范例的代碼:
function readCookie()
{
var the_cookie = document.cookie;
var broken_cookie = the_cookie.split(":");
var the_name = broken_cookie[1];
var the_name = unescape(the_name);
alert("Your name is: " + the_name);
}
第1行很重要.當(dāng)你的瀏覽器打開一個網(wǎng)頁時,它調(diào)用任何和該網(wǎng)頁有關(guān)的cookie然后將其載入document.cookie屬性.
讀取cookie的技巧在于從中抽取出你需要的信息.注意在我們所設(shè)置的cookie是這樣的:wm_javascript=username:dave%20thau.在該函數(shù)第1行之后的所有用于從該cookie中提取出用戶名(username).
var broken_cookie = the_cookie.split(":");
將cookie在分號處分割成兩部分.
var the_name = broken_cookie[1];
抓取分號后面的內(nèi)容dave%20thau.
var the_name = unescape(the_name);
取消函數(shù)escape()的編碼替換.在本例中重新用空格替換了%20.
alert("Your name is: " + the_name);
顯示你的姓名.
這個例子使用的cookie只保存了很少的信息:用戶名,cookie最多可以保存多達(dá)4kb的信息。下一講里我們講要講一個復(fù)雜的例子。
相關(guān)文章
JS函數(shù)實現(xiàn)動態(tài)添加CSS樣式表文件
有時會使用一些改變心情方面的想法,比如JS函數(shù)實現(xiàn)動態(tài)添加CSS樣式表文件,這樣就可以做到隨機(jī)加載心情文件,需要的朋友可以了解下2012-12-12javascript處理a標(biāo)簽超鏈接默認(rèn)事件的方法
這篇文章主要介紹了javascript處理a標(biāo)簽超鏈接默認(rèn)事件的方法,涉及event.preventDefault()方法阻止默認(rèn)事件的使用技巧,需要的朋友可以參考下2015-06-06JavaScript腳本語言在網(wǎng)頁中的簡單應(yīng)用
JavaScript腳本語言在網(wǎng)頁中的簡單應(yīng)用...2007-05-05分析Node.js connect ECONNREFUSED錯誤
最近在準(zhǔn)備Angularjs +node.js demo的時候在我的mac開發(fā)中 遇見此錯誤2013-04-04javascript Function函數(shù)理解與實戰(zhàn)
小編給大家?guī)硪黄P(guān)于javascript的基礎(chǔ)教學(xué)內(nèi)容,關(guān)于Function函數(shù)的訓(xùn)練與理解,一起學(xué)習(xí)下吧。2017-12-12JavaScript 中的執(zhí)行上下文和執(zhí)行棧實例講解
這篇文章主要介紹了JavaScript 中的執(zhí)行上下文和執(zhí)行棧實例講解,文中實例講解的很清晰,有感興趣的同學(xué)可以研究下2021-02-02javascript中數(shù)組array及string的方法總結(jié)
本文結(jié)合自己的使用經(jīng)驗,給大家總結(jié)了javascript中數(shù)組array及string的使用方法,這里推薦給有需要的小伙伴。2014-11-11