成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

瀏覽器悄悄上線了這個 API,大大簡化了跨瀏覽器標簽頁通信

系統 瀏覽器
BroadcastChannel API 允許來自同源的瀏覽器不同上下文(如標簽頁、窗口、iframe)之間進行通信。它的 API 非常簡潔,主要包含創建、發送、接收和關閉四個步驟。

過去,最常見的就是利用 localStorage 的 onstorage 事件監聽來處理跨瀏覽器標簽頁通信,但其本職是存儲,通信只是其副作用,且 API 不夠直觀。

現代瀏覽器已經為我們提供了一個專門為此場景設計的、更優雅、更高效的解決方案。

什么是 BroadcastChannel?

BroadcastChannel API 允許來自同源的瀏覽器不同上下文(如標簽頁、窗口、iframe)之間進行通信。

其核心特點是:同源限制、發布/訂閱模式且角色可以互換、基于消息事件對高效通信、支持復雜數據,無需手動序列化。

它的 API 非常簡潔,主要包含創建、發送、接收和關閉四個步驟。

1. 創建或加入一個頻道

要進行通信,首先需要創建一個 BroadcastChannel 實例,并給它指定一個唯一的頻道名稱。所有希望通信的頁面都必須使用相同的頻道名稱。

// 創建一個名為 'user_status_channel' 的頻道
const channel = new BroadcastChannel('user_status_channel');

如果名為 user_status_channel 的頻道已存在,這行代碼會加入該頻道;如果不存在,則會創建它。

2. 發送消息

創建實例后,使用 postMessage() 方法向頻道廣播消息。所有監聽該頻道的其他標簽頁都會收到此消息。

postMessage() 的強大之處在于它可以發送各種復雜的數據結構,包括對象、數組、Map、Set、File 對象等,瀏覽器會自動處理序列化和反序列化。

3. 接收消息

通過監聽 message 事件來接收廣播。事件對象 event 中包含了我們最關心的 data 屬性,也就是發送方傳遞的消息。

channel.onmessage = (event) => {
 console.log('收到消息:', event.data);

 // 根據消息內容執行相應操作
 if (event.data && event.data.type === 'login') {
    updateUIForLogin(event.data.user);
  } else if (event.data && event.data.type === 'logout') {
    updateUIForLogout();
  }
};

// 也可以使用 addEventListener
// channel.addEventListener('message', (event) => { ... });

4. 關閉頻道

當頁面不再需要接收或發送消息時(例如,在組件卸載或頁面關閉時),應該調用 close() 方法來關閉頻道,以釋放資源。

// 當組件銷毀或頁面關閉時
window.onunload = () => {
  channel.close();
};

// 在 React 或 Vue 等框架中,可以在組件的卸載生命周期函數中調用
// useEffect(() => {
//   return () => channel.close();
// }, []);

BroadcastChannel API 是實現同源跨標簽頁通信的現代化標準方案,具有簡潔的 API、強大的功能和優秀的性能,完美地解決了 localStorage hack 方案的各種痛點。

至于兼容性,只要不用 IE 就行。

責任編輯:趙寧寧 來源: JavaScript
相關推薦

2025-07-14 07:05:00

API瀏覽器數組

2025-06-09 07:10:00

JavaScriptAPI開發

2021-08-28 06:15:49

瀏覽器手機瀏覽器夸克

2024-03-20 08:06:20

瀏覽器擴展插件iTab

2015-10-22 10:06:08

靜音標簽頁Chrome

2012-03-19 17:25:22

2012-03-20 11:31:58

移動瀏覽器

2012-03-20 11:41:18

海豚瀏覽器

2012-03-20 11:07:08

2012-06-21 15:38:02

獵豹瀏覽器

2010-04-05 21:57:14

Netscape瀏覽器

2012-03-19 17:17:00

移動瀏覽器歐朋

2012-03-20 11:22:02

QQ手機瀏覽器

2021-01-25 17:11:14

Firefox火狐瀏覽器瀏覽器

2012-03-20 11:35:32

傲游手機瀏覽器

2021-03-09 14:56:25

Safari瀏覽器蘋果

2010-05-31 10:11:02

2010-12-21 10:11:35

手機瀏覽器

2012-03-20 13:12:38

百度手機瀏覽器

2012-08-23 14:56:46

瀏覽器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲免费福利视频 | av免费在线播放 | 日韩精品久久久久久 | 亚洲天堂久久久 | 国产一级片免费观看 | av观看网站 | 国产小视频在线 | 国产精品久久久久久中文字 | 哦┅┅快┅┅用力啊┅aps | 精品视频免费在线观看 | 红桃av在线 | 久久国产精品视频 | 欧美午夜精品 | 欧美成人高清 | 亚洲精品久久久久avwww潮水 | 久久久成人免费视频 | 亚洲国产毛片 | 在线观看免费毛片 | 成人香蕉网| 欧美成人三级在线观看 | 亚洲视频不卡 | 成人三级晚上看 | 日日夜夜精品免费 | 人人看人人干 | 欧美一区二区三区在线 | 九九九精品视频 | 天天摸天天干 | 国产一级片视频 | 亚洲精品一二三四区 | 黄色一节片 | 视频在线观看一区 | 日韩欧美不卡 | 黄色片亚洲 | 成人在线国产 | av播播| 国产成人综合在线 | www.黄色com| 免费黄色av网站 | 国产一级免费 | 国产欧美另类 | 国产精品久久久久久无人区 |