如何实现网页多标签tab通讯?

157 阅读1分钟

使用WebSocket

  • 无跨域限制
  • 需要服务端支持,成本高

通过localStorage通讯

  • 同域的A和B两个页面
  • A 页面设置localStorage
  • B 页面可监听到localStorage 值的修改

代码演示

页面1:

image.png

页面2:

image.png

点击页面1按钮后,页面2的console:

image.png

通过 SharedWorker 通讯

  • SharedWorker 是 WebWorker 的一种
  • WebWorker 可开启子进程执行JS,但不能操作DOM
  • SharedWorker 可单独开启一个进程,用于同域页面通讯

总结:

  • WebSocket 需要服务端,成本较高
  • localStorage 简单易用,推荐
  • SharedWorker 调试不方便,不兼容IE11