首页 > 建站教程 > JS、jQ、TS >  vue利用storage监听实现两个tab页之间的通信正文

vue利用storage监听实现两个tab页之间的通信

我爱模板网在开发一个cms程序时,有这么个需求:cms的内容众所周知是核心功能之一,所以在文章列表点击添加文章时,要打开新窗口,然后在新窗口添加完文章,自动关闭这个窗口,同时通知列表页刷新。

本想着,vue通信方法很多,如vuex、event Bus等,但是由于vue是单页应用,两个标签页的状态是响应不到一块的。但是,两个页面的域名相同,storage是共享的。所以只要通过监听storage变化即可。


方法如下:

在列表页中,点击进入详情页时,存储一个数据,值为一个时间戳

localStorage.setItem('isSave', new Date().getTime())


在列表页中,通过window.onstorage监听storage数据的改变,返回一个event事件对象

function onStorageHandle(e) {
  if (e.key === 'isSave' && e.newValue === 'true') {
    getList()  // 刷新列表页
  }
}
window.addEventListener('storage', onStorageHandle);


在详情页中,保存成功后,更新时间戳,并关闭当前页面

localStorage.setItem('isSave', new Date().getTime())
window.close()