偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

瀏覽器悄悄上線了這個(gè) API,大大簡化了跨瀏覽器標(biāo)簽頁通信

系統(tǒng) 瀏覽器
BroadcastChannel API 允許來自同源的瀏覽器不同上下文(如標(biāo)簽頁、窗口、iframe)之間進(jìn)行通信。它的 API 非常簡潔,主要包含創(chuàng)建、發(fā)送、接收和關(guān)閉四個(gè)步驟。

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

現(xiàn)代瀏覽器已經(jīng)為我們提供了一個(gè)專門為此場景設(shè)計(jì)的、更優(yōu)雅、更高效的解決方案。

什么是 BroadcastChannel?

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

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

它的 API 非常簡潔,主要包含創(chuàng)建、發(fā)送、接收和關(guān)閉四個(gè)步驟。

1. 創(chuàng)建或加入一個(gè)頻道

要進(jìn)行通信,首先需要?jiǎng)?chuàng)建一個(gè) BroadcastChannel 實(shí)例,并給它指定一個(gè)唯一的頻道名稱。所有希望通信的頁面都必須使用相同的頻道名稱。

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

如果名為 user_status_channel 的頻道已存在,這行代碼會(huì)加入該頻道;如果不存在,則會(huì)創(chuàng)建它。

2. 發(fā)送消息

創(chuàng)建實(shí)例后,使用 postMessage() 方法向頻道廣播消息。所有監(jiān)聽該頻道的其他標(biāo)簽頁都會(huì)收到此消息。

postMessage() 的強(qiáng)大之處在于它可以發(fā)送各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu),包括對象、數(shù)組、Map、Set、File 對象等,瀏覽器會(huì)自動(dòng)處理序列化和反序列化。

3. 接收消息

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

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

 // 根據(jù)消息內(nèi)容執(zhí)行相應(yīng)操作
 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. 關(guān)閉頻道

當(dāng)頁面不再需要接收或發(fā)送消息時(shí)(例如,在組件卸載或頁面關(guān)閉時(shí)),應(yīng)該調(diào)用 close() 方法來關(guān)閉頻道,以釋放資源。

// 當(dāng)組件銷毀或頁面關(guān)閉時(shí)
window.onunload = () => {
  channel.close();
};

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

BroadcastChannel API 是實(shí)現(xiàn)同源跨標(biāo)簽頁通信的現(xiàn)代化標(biāo)準(zhǔn)方案,具有簡潔的 API、強(qiáng)大的功能和優(yōu)秀的性能,完美地解決了 localStorage hack 方案的各種痛點(diǎn)。

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

責(zé)任編輯:趙寧寧 來源: JavaScript
相關(guān)推薦

2025-07-14 07:05:00

API瀏覽器數(shù)組

2025-06-09 07:10:00

JavaScriptAPI開發(fā)

2021-08-28 06:15:49

瀏覽器手機(jī)瀏覽器夸克

2024-03-20 08:06:20

瀏覽器擴(kuò)展插件iTab

2015-10-22 10:06:08

靜音標(biāo)簽頁Chrome

2012-03-20 11:41:18

海豚瀏覽器

2012-03-19 17:25:22

2012-03-20 11:31:58

移動(dòng)瀏覽器

2012-03-20 11:07:08

2010-04-05 21:57:14

Netscape瀏覽器

2012-06-21 15:38:02

獵豹瀏覽器

2012-03-20 11:22:02

QQ手機(jī)瀏覽器

2012-03-19 17:17:00

移動(dòng)瀏覽器歐朋

2021-01-25 17:11:14

Firefox火狐瀏覽器瀏覽器

2021-03-09 14:56:25

Safari瀏覽器蘋果

2012-03-20 11:35:32

傲游手機(jī)瀏覽器

2012-08-23 14:56:46

瀏覽器

2012-03-20 13:12:38

百度手機(jī)瀏覽器

2010-12-21 10:11:35

手機(jī)瀏覽器

2015-06-11 14:05:46

QQ瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)