javascript - js 有什么优雅的办法实现在同时打开的两个标签页间相互通信?

查看:170
本文介绍了javascript - js 有什么优雅的办法实现在同时打开的两个标签页间相互通信?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

举了例子:

我同时打开了a和b两个页面,我聚焦在a上,并进行一些操作,让a页面上的js处理我的操作并将数据发送到旁边的b页面。此时b页面就能在不刷新、不经过服务器的情况下接收到这些数据并作出反馈。类似于在百度音乐pc网页版听歌的时候,如果已经打开了百度音乐盒页面和列表页,我在列表页点一首歌曲的播放按钮时,旁边的音乐盒页面就可以自动开始播放那首音乐,而不需要打开新页面。

总觉得用cookie什么的干这事有些鸡肋。

解决方案

提示下思路:
浏览器同时打开两个同域名的网页,他们的localStorage是共享的,不仅如此,他们之间的localStorage值改变也是可以监听的。同域的a和b两个页面,a页面发生localStorage.set('abc', 123),b页面可以通过如下方式监听变化:

window.addEventListener("storage", function(e){  
  console.log('key:', e.key); // "abc"
  console.log('oldValue:', e.oldValue); // null
  console.log('newValue:', e.newValue); // 123
});

这篇关于javascript - js 有什么优雅的办法实现在同时打开的两个标签页间相互通信?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆