摘要:下面就一個(gè)簡單例子來說明存取值曾田生獲取刪除指定值清空存儲(chǔ)事件和存儲(chǔ)發(fā)生變化就會(huì)觸發(fā)存儲(chǔ)事件,事件采用廣播的機(jī)制,會(huì)在同樣站點(diǎn)的作用域范圍內(nèi)發(fā)送消息。
客戶端的存儲(chǔ)相當(dāng)于給瀏覽器賦予了記憶功能。同一個(gè)站點(diǎn)的數(shù)據(jù)是如何共享數(shù)據(jù)的,一個(gè)頁面填寫的表單如何顯示在另一個(gè)頁面中,頁面關(guān)閉或?yàn)g覽器退出,打開還能重新顯示原來的頁面,這些都可以依靠瀏覽器的存儲(chǔ)功能來實(shí)現(xiàn)。
一、Web存儲(chǔ) 1、localStorage和sessionStorage基本代碼實(shí)現(xiàn)
兩個(gè)屬性都代表同一個(gè)Storage對(duì)象,一個(gè)持久化關(guān)聯(lián)數(shù)組,數(shù)組使用字符串來索引,儲(chǔ)存的值也是字符串的形式。localStorage和sessionStorage的區(qū)別在于儲(chǔ)存的有效期和作用域不同,儲(chǔ)存形式和api是一樣的。
一般使用形式
localStorage.name = "曾田生"; // 儲(chǔ)存字符串 var name = localStorage.name; // 獲取存儲(chǔ)信息
當(dāng)儲(chǔ)存數(shù)字時(shí)會(huì)自動(dòng)轉(zhuǎn)化成字符串,所以在取值是需要手動(dòng)轉(zhuǎn)換
localStorage.age = 666; var age = parseInt(localStorage.age);
日期也一樣
localStorage.time = (new Date()).toUTCString(); var time = new Date(Date.parse(localStorage.time));
咱們常用的json數(shù)據(jù)
localStorage.jsonData = JSON.stringify(data); var jsonData = JSON.parse(localStorage.jsonData);
存儲(chǔ)API
localStorage和sessionStorage除了可以通過上面的設(shè)置屬性來存儲(chǔ)值和通過查詢屬性來取值外,還有一套API操作數(shù)據(jù)。
下面就一個(gè)簡單例子來說明:
// 存取值 localStorage.setItem("name","曾田生"); var name = localStorage.getItem("name"); // 獲取 key - value var keyName = localStorage.key(0); var value = localStorage.getItem(keyName); // 刪除指定值 localStorage.removeItem("name"); // 清空 localStora localStorage.clear();
存儲(chǔ)事件
localStorage和sessionStorage 存儲(chǔ)發(fā)生變化就會(huì)觸發(fā)存儲(chǔ)事件,事件采用廣播的機(jī)制,會(huì)在同樣站點(diǎn)的作用域范圍內(nèi)發(fā)送消息。注意的是 localStorage和sessionStorage 的區(qū)別在于作用域的不同,所以事件觸發(fā)的窗口也有區(qū)別,作用域在下面小節(jié)會(huì)講到,還有一點(diǎn)是在發(fā)生存儲(chǔ)數(shù)據(jù)改變的窗口上是不會(huì)觸發(fā)該存儲(chǔ)事件的。
下面一個(gè)小例子:
我打開了兩個(gè)頁面 index.html
btn.addEventListener("click", function () { localStorage.name = "曾田生"; // 儲(chǔ)存字符串 var name = localStorage.name; // 獲取存儲(chǔ)信息 })
index2.html 做存儲(chǔ)事件監(jiān)聽:window.addEventListener
window.addEventListener("storage", function(e){ console.log(e); console.log("oldValue: "+ e.oldValue + " newValue:" + e.newValue); });
點(diǎn)擊 index.html 的 button 后 index2.html打印出如下消息
存儲(chǔ)有效期和作用域
localStorage和sessionStorage 的使用和api是相同的,但它們的有效期和作用域是有區(qū)別的。
(1)、localStorage
localStorage 的作用域限定在文檔源級(jí)別,什么意思呢,協(xié)議、主機(jī)名、端口三者一樣那就是同一文檔源,同源的文檔間共享同樣的localStorage數(shù)據(jù)。比如如下:
http://www.example.com // 協(xié)議:http;主機(jī)名:www.example.com https://www.example.com // 不同協(xié)議 http://demo.example.com // 不同 主機(jī)名 http://www.example.com:8000 // 不同端口
以上只有不滿足同源要求,即使在同一臺(tái)服務(wù)器也不能共享localStorage數(shù)據(jù)。
(2)、sessionStorage
首先 sessionStorage的作用域也是限定在同源里面,并且sessionStorage的作用域還被限定在窗口中。
比如:
A.html
B.html
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/81785.html
摘要:本地存儲(chǔ)的方案?jìng)鹘y(tǒng)把信息存儲(chǔ)到客戶端的瀏覽器中但是項(xiàng)目服務(wù)器端也是可以獲取的把信息存儲(chǔ)到服務(wù)器上的服務(wù)器存儲(chǔ)永久存儲(chǔ)在客服端的本地。 在客戶端運(yùn)行的js是不能操作用戶電腦磁盤中的文件的(這是為了保護(hù)客戶端運(yùn)行的安全)。 1、js中的本地存儲(chǔ): 使用js向?yàn)g覽器的某一個(gè)位置中存儲(chǔ)一些內(nèi)容,瀏覽器即使關(guān)閉了,存儲(chǔ)的信息也不會(huì)銷毀,當(dāng)在重新打開瀏覽器的時(shí)候我們依然可以獲取到上一次存儲(chǔ)的信息。...
摘要:字節(jié)流這個(gè)簡單的模型將數(shù)據(jù)存儲(chǔ)為長度不透明的字節(jié)字符串變量,將任何形式的內(nèi)部組織留給應(yīng)用層。字節(jié)流數(shù)據(jù)存儲(chǔ)的代表例子包括文件系統(tǒng)和云存儲(chǔ)服務(wù)。使用同步存儲(chǔ)會(huì)阻塞主線程,并為應(yīng)用程序的創(chuàng)建凍結(jié)體驗(yàn)。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 16 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過了前面的章節(jié),可以在這里找到它...
摘要:存儲(chǔ)客戶端存儲(chǔ)有幾種方式,存儲(chǔ)就是其中一種。瀏覽器兼容性存儲(chǔ)有效期永久性。實(shí)際上,的數(shù)據(jù)是寫入磁盤中,每次讀取數(shù)據(jù)時(shí),實(shí)際上是從硬盤驅(qū)動(dòng)器上讀取這些字節(jié)。所以不要在客戶端存儲(chǔ)敏感信息,比如密碼或信用卡信息。 WEB存儲(chǔ) 客戶端存儲(chǔ)有幾種方式,WEB存儲(chǔ)就是其中一種。最初作為H5的一部分被定義成API形式,后來被剝離出來作為獨(dú)立的標(biāo)準(zhǔn)。所描述的API包含localStorage對(duì)象和se...
摘要:維護(hù)瀏覽器和服務(wù)器端會(huì)話狀態(tài)的一種方式,一般用于保存用戶身份信息。服務(wù)器端生成推送到瀏覽器端,瀏覽器負(fù)責(zé)保存和維護(hù)數(shù)據(jù)。 Cookie 維護(hù)瀏覽器和服務(wù)器端會(huì)話狀態(tài)的一種方式,一般用于保存用戶身份信息。 服務(wù)器端生成Cookie推送到瀏覽器端,瀏覽器負(fù)責(zé)保存和維護(hù)數(shù)據(jù)。 特點(diǎn) 域名下的所用請(qǐng)求都會(huì)帶上Cookie 每條Cookie限制在4KB左右 Cookie在過期時(shí)間之前一直有效,若...
閱讀 3152·2021-09-30 09:47
閱讀 2003·2021-09-22 16:04
閱讀 2274·2021-09-22 15:44
閱讀 2534·2021-08-25 09:38
閱讀 540·2019-08-26 13:23
閱讀 1221·2019-08-26 12:20
閱讀 2807·2019-08-26 11:59
閱讀 1077·2019-08-23 18:40