[點(diǎn)晴永久免費(fèi)OA]【HTML/JS】localStorage和sessionStorage使用方法及應(yīng)用場(chǎng)景說明
![]() 這兩個(gè)是HTML5新增加的,經(jīng)常用到,在這里記錄一下。 兩個(gè)的共同點(diǎn)都是存儲(chǔ)在客戶端也就是瀏覽器,存儲(chǔ)的數(shù)據(jù)大小是5M,比cookie的4K大了很多。 1、生命周期: localStorage的生命周期是永久的,關(guān)閉頁面或?yàn)g覽器之后localStorage中的數(shù)據(jù)也不會(huì)消失。localStorage除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)永遠(yuǎn)不會(huì)消失。 作用域:相同瀏覽器的不同標(biāo)簽在同源情況下可以共享localStorage sessionStorage的生命周期是在僅在當(dāng)前會(huì)話下有效。sessionStorage引入了一個(gè)“瀏覽器窗口”的概念,sessionStorage是在同源的窗口中始終存在的數(shù)據(jù)。只要這個(gè)瀏覽器窗口沒有關(guān)閉,即使刷新頁面或者進(jìn)入同源另一個(gè)頁面,數(shù)據(jù)依然存在。但是sessionStorage在關(guān)閉了瀏覽器窗口后就會(huì)被銷毀。同時(shí)獨(dú)立的打開同一個(gè)窗口同一個(gè)頁面,sessionStorage也是不一樣的。 作用域:只在當(dāng)前標(biāo)簽可用,當(dāng)前標(biāo)簽的iframe中且同源可以共享 2、存儲(chǔ)大?。?/strong> localStorage和sessionStorage的存儲(chǔ)數(shù)據(jù)大小一般都是:5MB 3、存儲(chǔ)位置: localStorage和sessionStorage都保存在客戶端,以鍵值對(duì)的形式存儲(chǔ),不與服務(wù)器進(jìn)行交互通信。 4、存儲(chǔ)內(nèi)容類型: localStorage和sessionStorage只能存儲(chǔ)字符串類型,對(duì)于復(fù)雜的對(duì)象可以使用ECMAscript提供的JSON對(duì)象的stringify和parse來處理 5、獲取方式: localStorage:window.localStorage;; sessionStorage:window.sessionStorage;。 6、應(yīng)用場(chǎng)景: localStoragese:常用于長(zhǎng)期登錄(+判斷用戶是否已登錄),適合長(zhǎng)期保存在本地的數(shù)據(jù)。 sessionStorage:敏感賬號(hào)一次性登錄。 下面說一下具體用法: 兩個(gè)的用法可以說一樣,具體就是保存到本地、從本地取出來、刪除存儲(chǔ)的數(shù)據(jù)、清除全部,具體看下面代碼: 1 //localStorage的用法 2 //保存到本地,第一個(gè)參數(shù)是變量名,第二個(gè)是值 3 localStorage.setItem('name','張三'); 4 //從本地取出,只有一個(gè)參數(shù),存儲(chǔ)的變量名 5 localStorage.getItem('name'); 6 //刪除某一個(gè)存儲(chǔ)的數(shù)據(jù) 7 localStorage.removeItem('name'); 8 //清除所有的數(shù)據(jù) 9 localStorage.clear(); 10 //sessionStorage的用法,參考localStorage的用法 11 sessionStorage.setItem('name','李四'); 12 sessionStorage.getItem('name'); 13 sessionStorage.removeItem('name'); 14 sessionStorage.clear(); 第一次使用這個(gè)的可能會(huì)問怎么知道數(shù)據(jù)有沒有存儲(chǔ)到客戶端,很簡(jiǎn)單,就像我們查看元素一樣,localStorage和sessionStorage也可以在瀏覽器控制臺(tái)查看,首先運(yùn)行以下代碼: 1 //保存到本地 2 localStorage.setItem('name','張三'); 3 4 sessionStorage.setItem('name','李四'); 然后就可以看到下圖: 可以看到我們想要保存的數(shù)據(jù)已經(jīng)存儲(chǔ)到了本地。 上面只是簡(jiǎn)單的存儲(chǔ),在實(shí)際項(xiàng)目中可能會(huì)出現(xiàn)需要存儲(chǔ)數(shù)組或者是對(duì)象,這樣的情況下就不能像上面那樣簡(jiǎn)單的存儲(chǔ),需要轉(zhuǎn)換一下格式。 因?yàn)閘ocalStorage和sessionStorage是以字符串格式存儲(chǔ)到本地的。 對(duì)于需要存儲(chǔ)數(shù)組或者是對(duì)象,我們可以轉(zhuǎn)換一下格式,如下代碼: 1 //保存 2 setSession(key,value){ 3 localStorage.setItem(key,JSON.stringify(value)) 4 }; 5 //取出 6 getSession(key){ 7 return JSON.parse(localStorage.getItem(key)) 8 }; 上面是localStorage用法,sessionStorage同理。 刪除和清除全部還是上面代碼。 特別要注意: setStorage是存儲(chǔ)數(shù)據(jù)的,key是指定的數(shù)據(jù)名稱,可以隨意起,但是一定要是字符串類型,否則瀏覽器自動(dòng)把值作為key的名字。 如上圖第一個(gè)值,就是key不是以字符串指定的,即沒有加雙引號(hào)。value值字符串類型的也切記加雙引號(hào)。 該文章在 2023/3/20 16:12:49 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |