Fe-interview: [html] 第9天 浏览器内多个标签页之间的通信方式有哪些?

Created on 24 Apr 2019  ·  13Comments  ·  Source: haizlin/fe-interview

第9天 浏览器内多个标签页之间的通信方式有哪些?

html

Most helpful comment

完全答案
WebSocket (可跨域)
postMessage(可跨域)
Worker之SharedWorker
Server-Sent Events
localStorage
BroadcastChannel
Cookies

https://xv700.gitee.io/message-communication-for-web/

All 13 comments

PostMessage: 曾经在项目中使用过: 在一个页面内加了一个iframe, 由于父页面要和iframe通信所以使用了这个方式

1:本地存储
2:postMessage
如果使用vue框架那么vuex也是ok的

  • 借助 cookie, localStorage(sessionStorage 在某些场景下并不能跨标签,必须要原页面的 a 标签的 target=_blank 才行)。这些只要在同一个域名下就可以进行通信和数据的共享
  • 借助 window.postMessage API 来进行消息的传递

完全答案
WebSocket (可跨域)
postMessage(可跨域)
Worker之SharedWorker
Server-Sent Events
localStorage
BroadcastChannel
Cookies

https://xv700.gitee.io/message-communication-for-web/

1.WebSocket (可跨域)
2.postMessage(可跨域)
3.SharedWorker
4.Server-Sent Events
5.localStorage
6.BroadcastChannel IE不支持
7.Cookies

  • localStorage
  • cookie + setInterval

不借助服务器支持的话:

  1. 监听storage事件
  2. cookie + setInterval
  3. BroadcastChannel (兼容:chrome 54+ ,firefox:38+, Edge 76 +, safari 13, IE尚不支持)
  4. SharedWorker

1.websocket
H5提供的在TCP连接上进行的双向通讯
2.localStorage(sessionStorage是每个标签页独立的)
3.cookie
4.SharedWorker

websocket协议、
localstorage、
以及使用html5浏览器的新特性SharedWorker

完全答案
WebSocket (可跨域)
postMessage(可跨域)
Worker之SharedWorker
Server-Sent Events
localStorage
BroadcastChannel
Cookies

尝试过的
localStroage
WebScoket

这个题目有些含糊,多个标签指的是在同一个域下的多个标签还是不同域下的多个标签。尝试回答下:

跨域

  • websocket
  • postMessage(推荐)

非跨域

  • cookie
  • localStorage
Was this page helpful?
0 / 5 - 0 ratings