如何实现浏览器内多个标签页之间的通信?

243 阅读1分钟

解释为“用于同源不同页面之间完成通信的功能”,意“同源”二字,该方法无法完成跨域的数据传输。

localStorage

localStorage是浏览器多个标签共用的存储空间,所以可以用来实现多标签之间的通信(ps:session是会话级的存储空间,每个标签页都是单独的)。

postMessage

iframe的postMessage

postMessage 有哪些使用场景?

window.postMessage() 方法可以安全地实现跨源通信。

用途

可用于两个不同的Iframe(不同源) 之间的通讯

image.png

安全问题

如果您不希望从其他网站接收message,请不要为message事件添加任何事件侦听器。  这是一个完全万无一失的方式来避免安全问题。 如果您确实希望从其他网站接收message,请始终使用origin和source属性验证发件人的身份