這篇文章將為大家詳細講解有關Cookie的用法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、成都微信小程序、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了高陽免費建站歡迎大家使用!
用 JS 操作 Cookie 其實是很麻煩的,并不存在一個簡單的 API 能讓我們獲取或者設置 Cookie。
唯一一個操作 Cookie 的 API 是 document.cookie
,但是這句代碼使用起來很難受。如果說我們想要獲取一個需要的 Cookie,可能得先寫這么一個 utils 函數(shù):
function getCookie(name) { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) return parts.pop().split(';').shift(); }復制代碼
但是在 Chrome 87 版本中我們無需再引入這樣的代碼了,取而代之的是新的 API:cookieStore
。這是一個異步的 API,可以很方便地獲取設置以及監(jiān)聽 Cookie 的改變。
如果你想下載 beta 版本的 Chrome,可以在 此鏈接 中獲取。
以下是新內(nèi)容的介紹。
剛才在上文中我們已經(jīng)了解到在之前獲取一個需要的 Cookie 是有多麻煩,如今我們只需一句話就可以獲取想要的內(nèi)容了。
cookieStore.get
有兩種函數(shù)簽名,前者我們可以通過傳入 cookie 的屬性去匹配想要的內(nèi)容,后者則是直接傳入 name
獲取。API 很符合直覺,比之前的方式不知道好到哪里去了。
當然除了獲取單個 cookie 之外,新的 API 還提供了獲取多個 cookie 的方式。比如說現(xiàn)在我想獲取所有屬于某個 domain 的 cookies,就可以使用如下方式:
在之前我們?nèi)绻枰O置 Cookie 的話,應該會寫以下類似的代碼,還是在操作 document.cookie
const setCookie = (name, value, days = 7, path = '/') => { const expires = new Date(Date.now() + days * 864e5).toUTCString() document.cookie = name + '=' + encodeURIComponent(value) + '; expires=' + expires + '; path=' + path }復制代碼
現(xiàn)在我們可以通過 cookieStore.set
來很方便的設置 Cookie 了:
set
函數(shù)支持兩種簽名,前者可以設置所有 Cookie 上的內(nèi)容,后者就是 key-value
的形式。
說完獲取和刪除 Cookie,那么相應的刪除操作肯定也是不能少的。
在這之前如果你想刪除一個 Cookie,那么需要把這個 Cookie 的過期時間設置在過去,過期了自然而然就失效了。
var delete_cookie = function(name) { document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;'; };復制代碼
看起來很奇怪,想刪除一個 Cookie 不是把字段刪了,而是把它過期?,F(xiàn)在我們有了新的 API 就不需這樣做了:
同樣的,delete
API 也有兩個函數(shù)簽名,單純字符串的時候等同于需要刪除 Cookie 的 name
,傳個對象時簽名略有些與之前不同,需要注意簽名中可選屬性都是有默認值的:
dictionary CookieStoreDeleteOptions { required USVString name; USVString? domain = null; USVString path = "/"; };復制代碼
這個功能應該是之前沒有的,如今可以通過新的 API 監(jiān)聽 Cookie 的改變及刪除。
當我們設置或者刪除 Cookie 時對應的事件就會拋出我們所改變的內(nèi)容。
關于Cookie的用法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
當前文章:Cookie的用法
本文路徑:http://jinyejixie.com/article20/jdogco.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、電子商務、外貿(mào)網(wǎng)站建設、服務器托管、品牌網(wǎng)站建設、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)