首頁 web前端 H5教程 利用Storage Event實現頁間通訊的範例程式碼

利用Storage Event實現頁間通訊的範例程式碼

Oct 09, 2018 pm 04:46 PM
event storage

這篇文章主要介紹了利用Storage Event實現頁間通訊的範例程式碼的相關資料,有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。

我們都知道觸發window.onstorage必須滿足以下兩個條件:

  • 透過localStorage.setItem或sessionStorage.setItem儲存(更新)某個storage

  • 在儲存(更新)這個storage時,它的新值必須與之前的值不同

上面的第二個條件,簡單來講就是:要嘛是storage的初始化,因為不存在的storage,其值為null;要嘛就是對已有storage的更新

舉例:

// 初始化storage
window.localStorage.setItem('a', 123);

// 注册onstorage事件
window.onstorage = (e) => {
  console.log(e);
};

// 更新storage
window.localStorage.setItem('a', 123);
登入後複製

上面的最後一行程式碼並不會觸發onstorage事件,因為a的值並沒有變化,前後都是123,所以瀏覽器判定這次更新是無效的

由於onstorage事件是瀏覽器觸發的,所以如果我們打開了多個相同域名下的頁面,並在其中任一頁面執行window.localStorage.setItem方法(也要保證滿足文章開頭提到的第二個條件),那麼其他頁面如果監聽了onstorage事件,則這些頁面中的onstorage事件回呼都會被執行

舉例:

// http://www.example.com/a.html
<script>
// 注册onstorage事件
window.onstorage = (e) => {
  console.log(e);
};
</script>
登入後複製
// http://www.example.com/b.html
<script>
// 注册onstorage事件
window.onstorage = (e) => {
  console.log(e);
};
</script>
登入後複製
// http://www.example.com/c.html
<script>
// 触发onstorage事件
window.localStorage.setItem(&#39;a&#39;, new Date().getTime());
</script>
登入後複製

只要保證c頁面在a和b頁面之後打開(哪怕三個頁面不在同一瀏覽器窗口,這裡需要區別窗口與tab頁的區別),那麼a和b頁面中的onstorage事件都會被觸發

現在我們已經知道如何利用storage event實現了頁面之間的通信,那麼這個通信對於我們有何用途呢?

其實我們只需知道是哪個storage的更新操作觸發了onstorage事件就足夠了,那我們要如何知道呢? onstorage事件回呼和其他事件回呼函數一樣,也接收一個event物件參數,在這個物件中有3個有用的屬性,它們分別是:

  • key 被初始化或更新的storage的鍵名稱

  • oldValue 被初始化或更新的storage之前的值

  • ##newValue 被初始化或更新的storage之後的值

結合這3個關鍵屬性,我們就可以實現頁間的資料同步

#最後提一下localStorage與sessionStorage的差異

localStorage 裡面儲存的資料沒有過期時間設置,而儲存在sessionStorage 裡面的資料在頁面會話結束時會被清除

總結:以上就是本篇的全部內容,希望能對大家的學習有所幫助。更多相關教學請造訪

Html5影片教學

相關推薦:

php公益訓練影片教學

#HTML5圖文教學

HTML5線上手冊

以上是利用Storage Event實現頁間通訊的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP8.0中的事件處理庫:Event PHP8.0中的事件處理庫:Event May 14, 2023 pm 05:40 PM

PHP8.0中的事件處理庫:Event隨著互聯網的不斷發展,PHP作為一門流行的後台程式語言,被廣泛應用於各種Web應用程式的開發中。在這個過程中,事件驅動機製成為了非常重要的一環。 PHP8.0中的事件處理函式庫Event將為我們提供一個更有效率和彈性的事件處理方式。什麼是事件處理在網路應用程式的開發中,事件處理是一個非常重要的概念。事件可以是任何一種使用者行

Steam 夏季特賣 - Valve 預告 AAA 遊戲可享 95% 的折扣,確認病毒遊戲 Palworld 和內容警告的折扣 Steam 夏季特賣 - Valve 預告 AAA 遊戲可享 95% 的折扣,確認病毒遊戲 Palworld 和內容警告的折扣 Jun 26, 2024 pm 03:40 PM

Steam 的夏季特賣此前曾舉辦過一些最優惠的遊戲折扣,而今年 Valve 似乎又迎來了另一場全壘打。剛剛發布了一段預告片(請參見下文),其中展示了一些 Steam 夏季特賣折扣遊戲。

storage資料夾在哪裡 storage資料夾在哪裡 Jan 12, 2021 pm 02:02 PM

storage資料夾在檔案管理中,其查找方法:1、直接開啟手機桌面,點選系統工具進入;2、選擇檔案管理跳轉;3、瀏覽全部檔案;4、在檔案管理中找到storage資料夾即可。

Python之Pygame的Event事件模組怎麼使用 Python之Pygame的Event事件模組怎麼使用 May 18, 2023 am 11:58 AM

Pygame的Event事件模組事件(Event)是Pygame的重要模組之一,它是建立整個遊戲程式的核心,例如常用的滑鼠點擊、鍵盤敲擊、遊戲視窗移動、調整視窗大小、觸發特定的情節、退出遊戲等,這些都可以看做是「事件」。事件類型Pygame定義了一個專門用來處理事件的結構,即事件隊列,該結構遵循遵循隊列「先到先處理」的基本原則,透過事件隊列,我們可以有序的、逐一的處理用戶的操作(觸發事件)。下述表格列出了Pygame中常用的遊戲事件:名稱說明QUIT用戶按下視窗的關閉按鈕ATIVEEVENTPy

Steam 夏季促銷預告片預告 AAA 遊戲優惠 95%,確認 Palworld、Stellaris 降價,內容警告 Steam 夏季促銷預告片預告 AAA 遊戲優惠 95%,確認 Palworld、Stellaris 降價,內容警告 Jun 26, 2024 am 06:30 AM

Steam 的夏季特賣此前曾舉辦過一些最優惠的遊戲折扣,而今年 Valve 似乎又迎來了另一場全壘打。剛剛發布了一段預告片(請參見下文),其中展示了一些 Steam 夏季特賣折扣遊戲。

在JavaScript中,當瀏覽器視窗調整大小時,這是哪個事件? 在JavaScript中,當瀏覽器視窗調整大小時,這是哪個事件? Sep 05, 2023 am 11:25 AM

使用window.outerWidth和window.outerHeight事件在JavaScript中取得視窗大小,當瀏覽器調整大小時。範例您可以嘗試執行以下程式碼來使用事件檢查瀏覽器視窗大小−&lt;!DOCTYPEhtml&gt;&lt;html&gt;  &lt;head&gt;   &lt;script&gt;&am

蘋果稱 128GB 的​​ iPhone 15 空間依然充裕 因為有雲端存儲 蘋果稱 128GB 的​​ iPhone 15 空間依然充裕 因為有雲端存儲 Mar 19, 2024 am 11:40 AM

近日,CNMO了解到,蘋果公司發布了名為&quot;iPhone15Storage|Don’tLetMeGo|Apple&quot;的宣傳視頻,旨在透過強調雲端儲存的便利性,解決用戶對手機儲存空間不足的擔憂。儘管市場上對於手機記憶體需求日益增長,iPhone15系列仍保持128GB作為起步儲存空間,但蘋果透過宣傳影片表示,即便是這樣的基礎配置,用戶也能透過iCloud雲端儲存實現大量照片的儲存。宣傳影片中,一名男子麵對手機中的照片,陷入刪與不刪的兩難抉擇,此時背景音樂響起&quot;don'tletgo&quot;的旋律,彷彿在訴說用戶對

Tesla 發出 Robotaxi 邀請參加 10 月 10 日在洛杉磯舉行的自動駕駛演示活動 Tesla 發出 Robotaxi 邀請參加 10 月 10 日在洛杉磯舉行的自動駕駛演示活動 Sep 27, 2024 am 06:20 AM

最初預計特斯拉將在今年8 月推出之前洩露的Robotaxi,但首席執行官 Elon Musk 推遲了這一活動,理由是Robotaxi 前部的美觀發生了變化,並且在最後一刻需要額外的時間

See all articles