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