怎样在同一个浏览器中多个标签页同时更新数据?

发布于 2022-09-13 00:22:54 字数 178 浏览 10 评论 0

怎样在同一个浏览器中多个标签页同时更新数据?
就像QQ音乐一样,打开多个音乐播放标签页,添加一首歌,所有的音乐播放标签页同时更新。
QQ音乐播放地址:https://y.qq.com/n/ryqq/player

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

‖放下 2022-09-20 00:22:54

前端处理的话使用postMessage,后端的话就是长连接或者轮询。

醉态萌生 2022-09-20 00:22:54

通过监听 storage 是否改变实现,受同源策略限制

window.addEventListener('storage', (e) => {
  // storage changed
});
天冷不及心凉 2022-09-20 00:22:54

BroadcastChannel

画骨成沙 2022-09-20 00:22:54

多个标签页共享数据可以使用Window.localStorage

浏览器缓存比较可参考:https://www.kancloud.cn/yunzhiclub/angularguide/2176484

vue的话,在Window.localStorage在个标记符就好,比如标记符名称为lastUpdateTime。然后在每隔一段时间来查看这个标记符是否发生了变化,如果发生了变化就说明需要重新拉取缓存中的其它数据。

private lastUpdateTime: string;
private key = 'lastUpdateTime';

/**
* 更新数据
*/
update(data: any): void {
  this.lastUpdateTime = new Date().getTime() + '';
  
  Window.localStorage.setItem(this.key, this.lastUpdateTime + '');
  // 以下更新数据
}

/**
* 监听数据
*/
listen(): void {
   setInterval(() => {
      const lastUpdateTime = Window.localStorage.getItem(this.key);
      if (this.lastUpdateTime !== lastUpdateTime) {
        this.lastUpdateTime = lastUpdateTime;
        // 检测到了变化,获取缓存中的数据后,进来相关的更新操作。
      }
   }, 1000)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文