JavaScript進階教程(第二課續)第1/2頁

來源:互聯網
上載者:User

現在你已經掌握了先進的字串處理和相關數組概念,該是我們開啟神奇的cookie魔瓶的時候了.cookie是記錄訪問你的網站的人的資訊,它其實駐留在使用者的硬碟上,即使使用者已經離開你的網站,cookie在使用者的硬碟上仍然存在,如果該使用者再次返回你的網站,則該cookie就會被一起發回到你的伺服器中,便於你統計和處理重複到訪者的資訊.

下面我們看一看一個cookie應用的典型例子,我們在一個網頁中設定cookie,然後通過別的網頁讀取它.在使用該例子的時候,想想如果沒有cookie,你如何做到這一點.

由於cookies牽扯到向使用者的硬碟寫盤和讀取資訊,所以就涉及一個保密性的問題.cookie有其作用範圍以及內在的局限性.其最重要的局限性在於:不是每個人的瀏覽器都歡迎cookies.即便是使用者的瀏覽器歡迎cookies,但使用者也有可能拒絕cookies的訪問(大部分人還是歡迎的)每個網域名稱只分配20個cookies,所以要節省著什麼它們.Cookies不得大於4 KB,當然4,000位元組的容量是足夠的了.

瞭解了這些局限性之後我們開始學習如何設定cookies.設定一個基本的cookie很容易.你所需做的只是在一個cookie_name=value
表單中產生一個字串,然後設定document.cookie屬性.唯一的技巧:cookie值中不能有空格,逗號或分號.好在你無需擔心這些問題,因為有一系列的函數可以幫你對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.");
}

函數中間的兩行是關鍵:
var the_cookie = "wm_javascript=username:" + escape (the_name);

如果我在提示框中輸入了"dave thau",該行代碼將產生一個字串wm_javascript=username:dave%20thau.這就是說我將把一個名為wm_javascript的cookie儲存到硬碟.該cookie的值是username:dave%20thau - 函數 escape()將"dave" 和"thau"之間的空格用%20做了替換.

當我們讀取cookie時,我們尋找名為wm_javascript的cookie,然後提取username:dave%20thau,將其用 unescape()解碼,去掉username:.

document.cookie = the_cookie;

cookie現在就設定好了,很簡單.

一旦你在某使用者的硬碟上設定了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行很重要.當你的瀏覽器開啟一個網頁時,它調用任何和該網頁有關的cookie然後將其載入document.cookie屬性.

讀取cookie的技巧在於從中抽取出你需要的資訊.注意在我們所設定的cookie是這樣的:wm_javascript=username:dave%20thau.在該函數第1行之後的所有用於從該cookie中提取出使用者名稱(username).

var broken_cookie = the_cookie.split(":");
將cookie在分號處分割成兩部分.

var the_name = broken_cookie[1];
抓取分號後面的內容dave%20thau.

var the_name = unescape(the_name);
取消函數escape()的編碼替換.在本例中重新用空格替換了%20.

alert("Your name is: " + the_name);
顯示你的姓名.

這個例子使用的cookie只儲存了很少的資訊:使用者名稱,cookie最多可以儲存多達4kb的資訊。下一講裡我們講要講一個複雜的例子。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.