搜尋
首頁web前端js教程JavaScript使用localStorage儲存數據

本篇文章為大家帶來了關於javascript的相關知識,其中主要介紹了JavaScript使用localStorage存儲數據,文中示例代碼介紹的非常詳細,具有一定的參考價值,希望對大家有幫助。

JavaScript使用localStorage儲存數據

【相關推薦:javascript影片教學web前端

##背景

以前js都是

Session#Cookie 來儲存訊息,彷彿我還停留在那個時候,一問同事有沒有新的solution,才知道現在已經有HTML5 localStorage 本機儲存這個東西,可以在瀏覽器端儲存資料。

記得最早的

Cookies只能存很小的東西,4KB的樣子,而且安全性很差,在IE6時代一個網域也只能二十個Cookies吧,限制挺大,當然IE還有userData的東西,沒什麼用。 Flash也帶了一個Storage,相對比較大,空間是Cookie的25倍左右,當時現在也廢棄Flash了。

到了H5時代,就統一了,

LocalStorage一統天下。官方建議是每個網站 5MB ,非常大了,雖然瀏覽器設定會有差異,但是一般就存些JSON或者字串或者快取來說,足夠了。

HTML5 LocalStorage 本機儲存

  • #sessionStorage:已儲存的資料用於瀏覽器的一次會話,當會話結束(通常是該視窗關閉),資料被清空;
  • localStorage:已儲存的資料長期存在,下次造訪該網站的時候,網頁可以直接讀取以前儲存的資料。除了保質期的長短不同,這兩個物件的屬性和方法完全一樣。
它們很像cookie機制的強化版,雖然能夠動用大得多的儲存空間。但是,與cookie一樣,它們也受同域限制。某個網頁存入的數據,只有同域下的網頁才能讀取。

透過檢查window物件是否包含 sessionStorage 和 localStorage 屬性,可以確定瀏覽器是否支援這兩個物件。

function checkStorageSupport()
{
 // sessionStorage
 if (window.sessionStorage) {
  return true;
 } else {
  return false;
 }
 
 // localStorage
 if (window.localStorage) {
  return true;
 } else {
  return false;
 }
}

Storage 動作

sessionStorage 和localStorage 儲存的數據,都以

「Key-Value鍵值對」的形式存在。也就是說,每一項資料都有一個鍵名和對應的值。所有的資料都是以文字格式儲存。

//sessionStorage 操作
sessionStorage.setItem("key","value");     // setItem方法,存储变量名为key,值为value的变量
var valueSession = sessionStorage.getItem("key");  // getItem方法,读取存储变量名为key的值
sessionStorage.removeItem('key');      // removeItem方法,删除变量名为key的存储变量
sessionStorage.clear();        // clear方法,清除所有保存数据
//localStorage 操作
localStorage.setItem("key","value");     // 存储变量名为key,值为value的变量
localStorage.key = "value"        // 同setItem方法,存储数据
var valueLocal = localStorage.getItem("key");   // 读取存储变量名为key的值
var valueLocal = localStorage.key;      // 同getItem,读取数据
localStorage.removeItem('key');      // removeItem方法,删除变量名为key的存储变量
localStorage.clear();         // clear方法,清除所有保存的数据

// 利用length属性和key方法,遍历所有的数据
for(var i = 0; i < localStorage.length; i++)
{
 console.log(localStorage.key(i));
}

// 存储 localStorage 数据为 Json 格式
value = JSON.stringify(jsonValue);      // 将 JSON 对象 jsonValue 转化成字符串
localStorage.setItem("key", value);     // 用 localStorage 保存转化好的的字符串

// 读取 localStorage 中 Json 格式数据
var value = localStorage.getItem("key");    // 取回 value 变量
jsonValue = JSON.parse(value);      // 把字符串转换成 JSON 对象

Storage 事件

當儲存的資料發生變化時,會觸發 storage 事件。我們可以指定這個事件的回呼函數。

window.addEventListener("storage",onStorageChange);

回呼函數接受一個event物件作為參數。這個event物件的key屬性,保存發生變化的鍵名。

function onStorageChange(e)
{
  console.log(e.key); 
}

除了key屬性,event物件的屬性還有三個:

    oldValue:更新前的值。如果該鍵為新增加,則這個屬性為null。
  • newValue:更新後的值。如果該鍵被刪除,則這個屬性為null。
  • url:原始觸發storage事件的那個網頁的網址。

特別注意的是,該事件不會在導致資料變更的目前頁面觸發。如果瀏覽器同時開啟一個網域下方的多個頁面,當其中的一個頁面改變sessionStorage或localStorage的資料時,其他所有頁面的storage事件會被觸發,而原始頁面不會觸發storage事件。可以透過這種機制,實現多個視窗之間的通訊。在所有瀏覽器之中,只有IE瀏覽器除外,它會在所有頁面觸發storage事件。

擴充知識

1、localStorage和sessionStorage是HTML5 Web儲存的提供的兩種儲存方式,在IE7以上以及大多數瀏覽器都是支援的

2、localStorage和sessionStorage的區別:

(1)、localStorage和sessionStorage一樣都是用來儲存客戶端臨時資訊的物件。

(2)、他們都是只能儲存字串類型的對象(雖然規範中可以儲存其他原生類型的對象,但是目前為止沒有瀏覽器對其進行實現)。

(3)、localStorage生命週期是永久,這表示除非使用者顯示在瀏覽器提供的UI上清除localStorage訊息,否則這些資訊將永遠存在。 (記錄在記憶體中的)

  sessionStorage生命週期為當前視窗或標籤頁,一旦視窗或標籤頁被關閉了,那麼所有透過sessionStorage儲存的資料也就被清空了(回話性質的儲存)

(4)、不同瀏覽器無法分享localStorage或sessionStorage中的資訊。相同瀏覽器的不同頁間可以共用相同的localStorage(頁面屬於相同網域和連接埠),但是不同頁面或標籤頁間無法共享sessionStorage的資訊。

  這裡需要注意的是,頁面及標籤頁僅指頂級窗口,如果一個標籤頁包含多個iframe標籤且他們屬於同源頁面,那麼他們之間是可以共享sessionStorage的。 (同源原則)

3、localStorage和sessionStorage可儲存資料的大小一般為5MB

【相關推薦:javascript影片教學web前端

以上是JavaScript使用localStorage儲存數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:脚本之家。如有侵權,請聯絡admin@php.cn刪除
從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引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

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

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

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

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

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

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

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實現跨平台開發,提高開發效率。

JavaScript的演變:當前的趨勢和未來前景JavaScript的演變:當前的趨勢和未來前景Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

神秘的JavaScript:它的作用以及為什麼重要神秘的JavaScript:它的作用以及為什麼重要Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

記事本++7.3.1

記事本++7.3.1

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