postMessage

允许窗口之间相互通信,无论它们来自什么源(可以不同源)

发送消息

将消息发送给 win 窗口:win.postMessage(data, targetOrigin)

接收消息

在目标窗口添加 message 事件监听器

window.addEventListener("message", function (event) {
  if (event.origin != 'xxx') {
    // 来自未知的源的内容,忽略它
    return
  }
  
  alert("received: " + event.data)
  
  // 可以使用 event.source.postMessage (...) 回发消息
})

BroadcastChannel

功能更全地交换信息:Broadcast Channel API
可以实现同源下浏览器不同窗口,Tab 页,frame 或者 iframe 下的 浏览器上下文 (通常是同一个网站下不同的页面) 之间的相互通讯