监听localStorage中值的变化实现跨页面通信

本次分享一个之前困扰很久的,跨页面之间的通信方式。

以前跨页面通信,就拿我们之前vue项目中多页面为例,每个页面都是一个独立的vue实例,通过main.js初始化,各个页面之间的数据不互通,而通信方式最常见的方式是往缓存中存储值,其他需要得到这个值的页面通过定时器去实时查询缓存中该值的变化,然后进行通信。

但是定时器终究不是一个好的实现方式,而定时器的时间长短设置多少都很有考究,时间太短太耗性能,时间太长的话,又会存在一段时间拿不到最新值的情况。

现在有一个很方便的方式,那就是 监听,其他页面正常像以前一样往 storage 存储值,如:localStorage.setItem(‘calling’, ‘55894’),然后需要获取该值的页面可以通过监听storage,就直接拿到变化后的值,示例如下:

// localhost:8080/pageOne 页面
localStorage.setItem('calling', '55894')
// localhost:8080/pageTwo 页面
window.addEventListener('storage', event => {
	if(event.key === 'calling') {
		services.call(event.newValue)
	}
})

部分属性介绍如下:

  • event.key:属性值为在 sessionStorage 或 localStorage 中被修改/新添加的数据键值;
  • event.oldValue:属性值为在 sessionStorage 或 localStorage 中被修改前的值;
  • event.newValue:属性值为在 sessionStorage 或 localStorage 中被修改后的值;
  • event.url:属性值为修改 sessionStorage 或 localStorage 中值的页面的URL地址,即该值在哪个页面被写入/被修改的;

tips:只能监听 sessionStoragelocalStorage 中值的变化,不能监听cookie中值的变化。

其余属性截图如下:在这里插入图片描述
好了,以上就是跨页面之间通信的一种方式。

期待能够对你有所帮助~

如有问题,请指出,接受批评。
在这里插入图片描述

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坏丶毛病

很庆幸此文有幸对您有帮助 ~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值