選項卡或窗口之間的通信我在尋找一種在瀏覽器中(在同一域中,而不是在CORS)中如何在多個選項卡或窗口之間進行通信而不留下痕跡的方法。有幾種解決辦法:使用窗口對象后訊息曲奇餅局部存儲第一種可能是最糟糕的解決方案-您需要從當前的窗口打開一個窗口,然后您只能在打開窗口的情況下才能進行通信。如果在任何窗口中重新加載頁面,則很可能會丟失通信。第二種方法,使用PostMessage,可能支持跨源通信,但與第一種方法有相同的問題。您需要維護一個窗口對象。第三種方法是使用cookie將一些數據存儲在瀏覽器中,這樣看起來就像向同一域中的所有窗口發送消息一樣,但問題是,在清理之前,您永遠無法知道所有選項卡是否已經讀取了“消息”。您必須實現某種超時才能定期讀取cookie。此外,您還受到最大Cookie長度的限制,最大Cookie長度為4KB。第四種解決方案,使用localStorage,似乎克服了cookie的局限性,甚至可以監聽-使用事件。如何使用它是在被接受的答案中描述的。編輯2018:公認的答案仍然有效,但是對于現代瀏覽器來說,使用BroadCastChannel還有一個新的解決方案。有關一個簡單的示例,請參見另一個答案,該示例描述了如何使用BroadCastChannel在制表符之間輕松地傳輸消息。
選項卡或窗口之間的通信
梵蒂岡之花
2019-06-11 21:08:23