首頁 web前端 js教程 JavaScript cookie的設定取得刪除詳解_javascript技巧

JavaScript cookie的設定取得刪除詳解_javascript技巧

May 16, 2016 pm 05:00 PM
設定cookie

設定cookie

每個cookie都是一個名/值對,可以把下面這樣一個字串賦值給document.cookie: 
document.cookie="userId=828" ;

如果要一次儲存多個名稱/值對,可以使用分號加空格(; )隔開,例如:
document.cookie="userId=828; userName=hulk";

在cookie的名或值中不能使用分號(;)、逗號(,)、等號(=)以及空格。在cookie的名中做到這一點很容易,但要保存的值是不確定的。如何來儲存這些值呢?方法是用escape()函數進行編碼,它能將一些特殊符號使用十六進位表示,例如空格將會編碼為“20%”,從而可以存儲於cookie值中,而且使用此種方案還可以避免中文亂碼的出現。例如:
document.cookie="str=" escape("I love ajax");

相當於:
document.cookie="str=I love ajax";

當使用escape()編碼後,在取出值以後需要使用unescape()進行解碼才能得到原來的cookie值,這在前面已經介紹過。

儘管document.cookie看起來就像一個屬性,可以賦出不同的值。但它和一般的屬性不一樣,改變它的賦值並不意味著丟失原來的值,例如連續執行下面兩條語句:
document.cookie="userId=828";

document .cookie="userName=hulk";

這時瀏覽器將維護兩個cookie,分別是userId和userName,因此給document.cookie賦值更像執行類似這樣的語句:
document. addcookie("userId=828");

document.addcookie("userName=hulk");

事實上,瀏覽器就是按照這樣的方式來設定cookie的,如果要改變一個cookie的值,只要重新賦值,例如:
document.cookie="userId=929";

這樣就將名為userId的cookie值設定為了929。

取得cookie的值

以下介紹如何取得cookie的值。 cookie的值可以由document.cookie直接取得:
var strcookie=document.cookie;

這將獲得以分號隔開的多個名/值對所組成的字串,這些名/值對包含了該網域下的所有cookie。例如:


圖7.1顯示了輸出的cookie值。由此可見,只能夠一次取得所有的cookie值,而無法指定cookie名稱以獲得指定的值,而這正是處理 cookie值最麻煩的一部分。使用者必須自行分析這個字串,來取得指定的cookie值,例如,要取得userId的值,可以這樣實作:


這樣就得到了單一cookie的值

用類似的方法,可以取得一個或多個cookie的值,其主要的技巧仍然是字串和陣列的相關操作。

給cookie設定終止日期

到目前為止,所有的cookie都是單會話cookie,即瀏覽器關閉後這些cookie將會遺失,事實上這些cookie只是儲存在記憶體中,而沒有建立對應的硬碟檔案。

在實際開發中,cookie常常需要長期保存,例如保存使用者登入的狀態。這可以用下面的選項來實現:

document.cookie="userId=828; expires=GMT_String";

其中GMT_String是以GMT格式表示的時間字串,這語句就是將userId這個cookie設定為GMT_String表示的過期時間,超過這個時間,cookie將消失,無法存取。例如:如果要將cookie設置為10天后過期,可以這樣實現:
複製代碼 代碼如下:



刪除cookie

為了刪除一個cookie,可以將其過期時間設定為一個過去的時間,例如:
複製程式碼 程式碼如下:



指定可存取cookie的路徑

預設情況下,如果在某個頁面建立了一個cookie,那麼該頁面所在目錄中的其他頁面也可以存取該cookie。如果這個目錄下還有子目錄,則在子目錄中也可以存取。例如在www.xxxx.com/html/a.html中所建立的cookie,可以被www.xxxx.com/html/b.html或www.xxx.com/ html/ some/c.html所訪問,但不能被www.xxxx.com/d.html存取。

為了控制cookie可以存取的目錄,需要使用path參數設定cookie,語法如下:
document.cookie="name=value; path=cookieDir";

其中cookieDir表示可存取cookie的目錄。例如:
document.cookie="userId=320; path=/shop";

就表示目前cookie僅能在shop目錄下使用。

如果要讓cookie在整個網站下可用,可以將cookie_dir指定為根目錄,例如:

document.cookie="userId=320; path=/";

指定可存取cookie的主機名稱

和路徑類似,主機名稱是指同一個網域下的不同主機,例如:www.google.com和gmail.google.com就是兩個不同的主機名稱。預設情況下,一個主機中建立的cookie在另一個主機下是不能被存取的,但可以透過domain參數來實現對其的控制,其語法格式為:

document.cookie="name =value; domain=cookieDomain";

以google為例,要實現跨主機訪問,可以寫為:

document.cookie="name=value;domain=.google.com ";

這樣,所有google.com下的主機都可以存取該cookie。

綜合範例:建構通用的cookie處理函數

cookie的處理過程較為複雜,且有一定的相似性。因此可以定義幾個函數來完成cookie的通用操作,從而實現程式碼的複用。下面列出了常用的cookie操作及其函數實作。

1.新增一個cookie:addcookie(name,value,expireHours)

此函數接收3個參數:cookie名稱,cookie值,以及在多少小時後過期。這裡約定expireHours為0時不設定過期時間,即瀏覽器關閉時cookie自動消失。此函數實作如下:
複製程式碼 程式碼如下:



2 .取得指定名稱的cookie值:getcookie(name)

函數傳回名稱為name的cookie值,如果不存在則回傳空,其實作如下:
複製程式碼 程式碼如下:



3.刪除指定名稱的cookie:deletecookie(name)

函數可以刪除指定名稱的cookie,其實作如下:
複製程式碼 程式碼如下:



也可以用另一種網路上流傳的:
複製程式碼 代碼如下:


代碼如下:



代碼如下:


var cval=getCookie(name); if(cval!=null) document.cookie = name "=" cval ";expires=" exp.toGMTString(); } SetCookie ("xiaoqi", "3") alert(getCookie('xiaoqi'));
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
JavaScript引擎:比較實施 JavaScript引擎:比較實施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

JavaScript:探索網絡語言的多功能性 JavaScript:探索網絡語言的多功能性 Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

如何使用Next.js(前端集成)構建多租戶SaaS應用程序 如何使用Next.js(前端集成)構建多租戶SaaS應用程序 Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

使用Next.js(後端集成)構建多租戶SaaS應用程序 使用Next.js(後端集成)構建多租戶SaaS應用程序 Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

從C/C到JavaScript:所有工作方式 從C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript和Web:核心功能和用例 JavaScript和Web:核心功能和用例 Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

JavaScript在行動中:現實世界中的示例和項目 JavaScript在行動中:現實世界中的示例和項目 Apr 19, 2025 am 12:13 AM

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

See all articles