婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 利用Storage Event實現頁面間通信的示例代碼

利用Storage Event實現頁面間通信的示例代碼

熱門標簽:電銷機器人電話用什么卡 云南大理400電話申請官方 江蘇智能電銷機器人哪家好 鎮江智能外呼系統有效果嗎 四川點撥外呼系統 成都智能外呼系統平臺 南寧點撥外呼系統哪家公司做的好 黃島區地圖標注 當涂高德地圖標注

我們都知道觸發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之后的值

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

最后提一下localStorage與sessionStorage的區別

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:十堰 西寧 佳木斯 咸寧 酒泉 廣西 淮安 南京

巨人網絡通訊聲明:本文標題《利用Storage Event實現頁面間通信的示例代碼》,本文關鍵詞  利用,Storage,Event,實現,頁面,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《利用Storage Event實現頁面間通信的示例代碼》相關的同類信息!
  • 本頁收集關于利用Storage Event實現頁面間通信的示例代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 自治县| 灌南县| 嘉义市| 阜平县| 琼中| 五大连池市| 尉氏县| 凭祥市| 崇州市| 溆浦县| 广安市| 稻城县| 商都县| 黎城县| 博客| 肇州县| 余庆县| 保德县| 甘德县| 崇义县| 高密市| 兴义市| 永寿县| 安平县| 察雅县| 车险| 黔西县| 格尔木市| 全南县| 玉龙| 沁阳市| 邯郸市| 京山县| 武陟县| 洪洞县| 鲜城| 凤庆县| 贵阳市| 花莲市| 江永县| 禄丰县|