跨標簽頁通信(三):Web Storage

在現代 Web 應用中,跨標簽頁通信的需求越來越普遍。無論是實現多標簽頁之間的數據同步,還是構建實時協作功能,跨標簽頁通信都能極大地提升用戶體驗。今天,我們將探討一種簡單而高效的實現方式:Web Storage

一、什么是 Web Storage?

Web Storage 是一種在瀏覽器中存儲數據的機制,它提供了兩種存儲方式:localStoragesessionStorage。這兩種存儲方式的主要區別在于數據的持久性和作用域。

  • localStorage:數據存儲在瀏覽器中,直到手動清除,適用于長期存儲數據。
  • sessionStorage:數據存儲在當前會話中,關閉瀏覽器標簽頁后數據會自動清除,適用于臨時存儲數據。

(一)特點

  • 簡單易用:API 簡潔,易于上手。
  • 同源限制:所有存儲的數據必須在同源頁面之間訪問。
  • 存儲容量localStorage 通常有 5MB 的存儲空間,sessionStorage 的存儲空間較小。

(二)適用場景

  • 數據共享:在多個標簽頁之間共享數據。
  • 狀態同步:同步用戶在多個標簽頁中的操作狀態。
  • 臨時存儲:存儲用戶在當前會話中的臨時數據。

二、使用 Web Storage 實現跨標簽頁通信

(一)localStorageonstorage 事件

localStorage 提供了一個 onstorage 事件,當存儲的數據發生變化時,會觸發該事件。這個事件可以用來實現跨標簽頁通信。

示例代碼

頁面一:設置數據

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>頁面一</title>
</head>
<body><input type="text" id="content" placeholder="請輸入消息"><button id="btn">發送消息</button><script>const content = document.querySelector("#content");const btn = document.querySelector("#btn");btn.onclick = function () {localStorage.setItem("message", content.value);};</script>
</body>
</html>

頁面二:監聽數據變化

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>頁面二</title>
</head>
<body><script>window.onstorage = function (e) {if (e.key === "message") {console.log("接收到消息:", e.newValue);}};</script>
</body>
</html>

(二)效果

  1. 打開兩個標簽頁,分別加載頁面一和頁面二。
  2. 在頁面一中輸入消息并點擊“發送消息”按鈕。
  3. 頁面二的控制臺會立即打印出接收到的消息。

(三)sessionStorage 的使用

sessionStorage 也可以用來實現跨標簽頁通信,但它的作用域僅限于當前會話。如果需要在多個標簽頁之間共享數據,建議使用 localStorage

三、注意事項

(一)同源限制

Web Storage 只能在同源頁面之間使用。如果頁面的協議、域名或端口不同,存儲的數據將無法共享。

(二)存儲容量

雖然 localStorage 提供了較大的存儲空間,但仍然有限制。如果存儲的數據過多,可能會導致存儲失敗。

(三)性能影響

雖然 Web Storage 的性能開銷較小,但在高頻率讀寫數據時,仍需注意對性能的影響。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86068.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86068.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86068.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大疆上云api 無人機攝像頭紅外調色模式

# topic thing/product/{你的機場}/property/set# 監聽topic&#xff0c;獲取設置結果 thing/product//property/set_reply#mqtt https://developer.dji.com/doc/cloud-api-tutorial/cn/api-reference/dock-to-cloud/mqtt/aircraft/m3d-properties.htmlthermal_current_palet…

DeepSeek與ChatGPT:免費與付費背后的選擇邏輯

內容簡介&#xff1a; 為什么有免費的DeepSeek&#xff0c;很多人還在付費用ChatGPT&#xff1f;作為20年互聯網老兵&#xff0c;作者通過實測發現&#xff1a;AI工具好壞七成看你怎么跟它聊天。DeepSeek不是真的不如ChatGPT&#xff0c;而是需要掌握"撩AI"的技巧。文…

【nvidia-H100-ib排障實戰1】:InfiniBand 帶寬測試命令深度解析,找到影響生產集群性能的ib

目錄 InfiniBand 帶寬測試命令深度解析 一、命令整體功能概述 二、服務器端命令解析:ib_write_bw -a -d 1. 命令主體功能 2. 關鍵參數解析 3. 服務器端工作模式 三、客戶端命令解析:ib_write_bw -a -d 1. 新增參數解析 2. 客戶端工作流程 四、核心測試指標與輸出解…

華為云Flexus+DeepSeek征文|基于華為云一鍵部署Dify LLM 應用構建 PPT 生成助手的開發與實踐

目錄 前言 1 華為云部署 Dify 平臺簡介 2 華為云 Dify 平臺的部署與登錄使用 3 模型接入與工具安裝 3.1 接入 DeepSeek 大模型 3.2 安裝 Markdown 轉 PPT 工具 4 構建 PPT 生成助手應用工作流 4.1 開始節點 4.2 文檔提取器 4.3 文本轉 PPT 文稿 LLM 4.4 Markdown 轉…

NW896NX769美光固態芯片NX790NX793

美光固態芯片深度解析&#xff1a;NX769、NX790、NX793與NW896技術全景 一、技術架構與核心特性 存儲工藝與性能基礎 美光NX系列&#xff08;含NX769/790/793&#xff09;及NW896均基于G9 NAND技術&#xff0c;采用176層TLC&#xff08;Triple-Level Cell&#xff09;3D NAND…

圖像融合的評價指標

目錄 一、常用指標總覽 1.1 指標分類 二、 指標解析與python代碼實現&#xff08;部分&#xff09; 2.1 基于信息熵的評估指標 A. 信息熵&#xff1a;/Entropy/EN B. 交叉熵 C.相關熵&#xff1a;Mutual Information/MI D.峰值信噪比/Peak signal-to-noise ratio/PSNR E. 基于邊…

【數據結構初階】--順序表(一)

&#x1f525;個人主頁&#xff1a;草莓熊Lotso &#x1f3ac;作者簡介&#xff1a;C研發方向學習者 &#x1f4d6;個人專欄&#xff1a; 《C語言》 《數據結構與算法》 ??人生格言&#xff1a;生活是默默的堅持&#xff0c;毅力是永久的享受。 前言&#xff1a;在上篇博客中…

Gateway路徑匹配規則易錯點

目錄 一、問題描述 二、問題產生原因&#xff1a; 三、總結 一、問題描述 在做微服務的項目的時候&#xff0c;選擇在nacos上配置Gateway網關的路由規則&#xff0c;然后在進行前后端聯調測試的時候發現&#xff0c;部分的微服務可以正常訪問&#xff0c;但是commerce-servic…

什么是大模型應用開發

一、概念點 自然語言處理&#xff08;NLP:Natural Language Processing&#xff09; 大模型&#xff08;LLM:Large Language Models&#xff09; 模型部署&#xff1a;云部署、本地部署、開放API 本地部署最簡單的一種方案&#xff1a;ollama https://ollama.com 二、大模型應…

Linux系統能ping通ip但無法ping通域名的解決方法

一、先確認系統網絡管理服務 現代 Linux 發行版常用 NetworkManager 或 systemd-networkd 管理網絡&#xff0c;而非傳統 networking.service &#xff0c;先檢查系統在用的網絡服務&#xff1a; 1.檢查 NetworkManager 執行以下命令&#xff1a; sudo systemctl status …

0_序章導論

??課程整體框架?? ??時長??&#xff1a;4周 ??終極目標??&#xff1a; &#x1f449; 學完后比大公司CEO更懂AI&#xff0c;能領導團隊解決實際問題 ??每周核心內容分解?? ??第一周&#xff1a;重新認識AI的本質?? ??弱AI&#xff08;ANI&#xff09; …

docker一鍵清除指令

在 Linux 系統中&#xff0c;關閉 Docker 服務及容器的指令如下&#xff0c;具體操作需根據需求選擇&#xff1a; 1. 停止 Docker 容器 (1) 停止所有正在運行的容器 # 停止所有運行中的容器&#xff08;推薦優雅關閉&#xff09; docker stop $(docker ps -q)(2) 強制停止所有…

阿里云主機自動 HTTPS 證書部署踩坑實錄

阿里云主機自動 HTTPS 證書部署踩坑實錄 前言 請原諒本篇標題,阿里云其實非常好用,只是細節很多,尤其是在HTTPS證書的配置和使用上。希望通過這篇文章,能夠幫助到遇到類似問題的朋友們。 原理 服務器運行 acme.sh 腳本,自動申請和更新 Let’s Encrypt 的 SSL 證書。ac…

Vue Class綁定:字符串形式詳解與應用

Vue Class綁定:字符串形式詳解與應用 在Vue中,class綁定有多種形式,其中字符串形式是最基礎且常用的一種。我將通過一個完整的示例展示其用法和優勢。 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><…

MySQL 與 Oracle 分區表詳解:相同點與不同點

在數據庫管理中&#xff0c;隨著數據量的不斷增長&#xff0c;如何高效地存儲和查詢數據成為了一個關鍵問題。分區表技術通過將大型表劃分為多個更小、更易于管理的部分&#xff0c;顯著提升了數據庫的性能和可維護性。MySQL 和 Oracle 作為兩款主流的關系型數據庫管理系統&…

在MATLAB中繪制陣列天線的散射方向圖

在MATLAB中繪制陣列天線的散射方向圖 RCS元因子、RCS陣因子、總的RCS 單基地雷達 文章目錄 前言一、雷達散射界面的定義二、陣列天線的雷達散射界面三、MATLAB仿真總結 前言 \;\;\;\;\; 在無線通信、雷達和天線設計中&#xff0c;分析陣列天線的散射特性至關重要。散射方向圖&a…

SaaS+AI架構實戰,

近年來&#xff0c;隨著云計算技術的成熟和市場需求的變化&#xff0c;SaaS&#xff08;軟件即服務&#xff09;已成為企業數字化轉型的核心工具。與傳統軟件相比&#xff0c;SaaS通過云端按需交付服務&#xff0c;大幅降低了企業的IT部署成本&#xff0c;同時提供了更高的靈活…

網絡安全應急響應實戰筆記

網絡安全應急響應實戰筆記 項目介紹 面對各種各樣的安全事件&#xff0c;我們該怎么處理&#xff1f; 這是一個關于安全事件應急響應的項目&#xff0c;從系統入侵到事件處理&#xff0c;收集和整理一些案例進行分析。 GitHub 地址&#xff1a;https://github.com/Bypass007…

國產Linux銀河麒麟操作系統安裝開源免費Draw.io(diagrams.net)替代Visio

一、Draw.io&#xff08;diagrams.net&#xff09;與 Microsoft Visio 對比&#xff1a; Draw.io&#xff08;現更名為 diagrams.net&#xff09;是一款流行的免費在線圖表工具&#xff0c;可以作為 Microsoft Visio 的替代品。draw.io 支持 UML、流程圖、架構圖&#xff0c;模…

asio之socket RAII管理socket_holder

簡介 socket_holder實現對socket的RAII管理 結構 #mermaid-svg-7AbOnlAgmXN8WUnw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7AbOnlAgmXN8WUnw .error-icon{fill:#552222;}#mermaid-svg-7AbOnlAgmXN8WUnw .er…