Skip to content

跨标签页通讯 ​

不同标签页间的通讯,本质原理就是去运用一些可以 共享的中间介质,因此比较常用的有以下方法:

  • 通过父页面window.open()和子页面postMessage

    • 异步下,通过 window.open('about: blank') 和 tab.location.href = '*'
  • 设置同域下共享的localStorage与监听window.onstorage

    • 重复写入相同的值无法触发
    • 会受到浏览器隐身模式等的限制
  • 设置共享cookie与不断轮询脏检查(setInterval)

  • 借助服务端或者中间层实现

浏览器架构 ​

  • 用户界面

  • 主进程

  • 内核

    • 渲染引擎

    • JS引擎

      • 执行栈
  • 事件触发线程

    • 消息队列
      • 微任务
      • 宏任务
  • 网络异步线程

  • 定时器线程