利用Storage Event實現頁間通訊的範例程式碼
這篇文章主要介紹了利用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('a', new Date().getTime()); </script>
只要保證c頁面在a和b頁面之後打開(哪怕三個頁面不在同一瀏覽器窗口,這裡需要區別窗口與tab頁的區別),那麼a和b頁面中的onstorage事件都會被觸發
現在我們已經知道如何利用storage event實現了頁面之間的通信,那麼這個通信對於我們有何用途呢?
其實我們只需知道是哪個storage的更新操作觸發了onstorage事件就足夠了,那我們要如何知道呢? onstorage事件回呼和其他事件回呼函數一樣,也接收一個event物件參數,在這個物件中有3個有用的屬性,它們分別是:
key 被初始化或更新的storage的鍵名稱
oldValue 被初始化或更新的storage之前的值
- ##newValue 被初始化或更新的storage之後的值
Html5影片教學!
相關推薦:以上是利用Storage Event實現頁間通訊的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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