首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 判斷另一頁面按鈕點擊:跨頁面通訊方案

     編輯:程式設計綜合問答

同源同窗口 (window.opener / parent / top)


// 頁面 A (打開頁面 B)
const winB = window.open('pageB.html');
winB.addEventListener('load', () => {
    winB.document.getElementById('btn').addEventListener('click', () => {
        console.log('頁面 B 按鈕被點擊');
    });
});

// 或頁面 B 主動通知
// 頁面 B
window.opener.postMessage({type: 'btn_click'}, '*');

// 頁面 A
window.addEventListener('message', e => {
    if (e.data.type === 'btn_click') console.log('收到點擊');
});

跨域/不同標籤頁

  • LocalStorage + storage 事件:頁面 B `localStorage.setItem('btn_click', Date.now())`,頁面 A 監聽 `storage` 事件。
  • BroadcastChannel API** (現代):
    
    const ch = new BroadcastChannel('app_channel');
    ch.postMessage({type: 'btn_click'}); // 發送
    ch.onmessage = e => console.log(e.data); // 接收
    
  • Service Worker / SharedWorker** 傳遞訊息。
  • 後端輪詢/WebSocket** 萬能但較重。

選擇建議

場景方案
同源 window.open直接 DOM 訪問 / postMessage
同源不同標籤BroadcastChannel / LocalStorage
跨域 iframepostMessage (指定 origin)
完全獨立頁面後端狀態同步 (DB/Redis + 輪詢/WS)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved