這裡介紹如何使用 JavaScript 管理瀏覽器的 cookie,並且提供範例教學以及簡單易上手的 API 工具。
瀏覽器的 cookie 可以讓網頁的 JavaScript 程式將少量的資料儲存起來,最常用於儲存網頁的設定值與一些程式 session 相關的資料。
我們可以在 JavaScript 中直接取得瀏覽器所儲存的 cookie 值:
allCookies = document.cookie;
也可以寫入新的 cookie(或是更新 cookie 值):
document.cookie = newCookie;
這裡的 newCookie 是一個 key=value 格式的字串,這樣的方式一次只能新增或是更新一個 cookie 值。
在寫入 cookie 時的 key=value 字串,還可以加上以下幾種字串來進行一些設定:
;path=path;path=/my_path,預設為目前的網頁路徑。;domain=domain;domain=gtwang.org,預設為目前的網址上的網域。;max-age=max-age-in-seconds60*60*24 就是一天。;expires=date-in-GMTString-formatmax-age 取代。;securedocument.cookie = "name=oeschger"; document.cookie = "favorite_food=tripe"; function alertCookie() { alert(document.cookie); }
在 HTML 中加入一個按鈕,用來顯示所有的 cookie:
<button >alertCookie()">Show cookies</button>
請點擊下面這個按鈕進行測試:
這是從 cookie 讀取變數的範例:
document.cookie = "test1=Hello"; document.cookie = "test2=World"; var cookieValue = document.cookie.replace(/(?:(?:^|.*;\s*)test2\s*\=\s*([^;]*).*$)|^.*$/, "$1"); function alertCookieValue() { alert(cookieValue); }
在 HTML 中加入一個按鈕,用來測試:
<button >alertCookieValue()">Show cookie value</button>
請點擊下面這個按鈕進行測試:
如果希望某一段 JavaScript 程式碼僅執行一次,可以使用 cookie 來判斷:
function doOnce() {
if (document.cookie.replace(/(?:(?:^|.*;\s*)doSomethingOnlyOnce\s*\=\s*([^;]*).*$)|^.*$/, "$1") !== "true") {
alert("Do something here!");
document.cookie = "doSomethingOnlyOnce=true; expires=Fri, 31 Dec 9999 23:59:59 GMT";
}
}
在 HTML 中加入一個按鈕,用來測試:
<button >doOnce()">Only do something once</button>
請點擊下面這個按鈕進行測試:
若要重設上面的 cookie,可以這樣做:
function resetOnce() {
document.cookie = "doSomethingOnlyOnce=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
在 HTML 中加入一個按鈕,用來測試:
<button >resetOnce()">Reset only once cookie</button>
請點擊下面這個按鈕進行測試:
Page: 1 2