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