h5 localStorage 值改变 注册事件(兼容同页面与不同页面触发值改变的监听)
2020-01-14 21:27
387 查看
utils.js
// 重写setItem事件,当使用setItem的时候,触发,window.dispatchEvent派发事件 export const dispatchEventStroage = (monitorKey) => { // 1 ** 放到main.js里执行 const signSetItem = localStorage.setItem localStorage.setItem = function (key, val) { if (monitorKey && key == monitorKey) { let setEvent = new Event('setItemEvent') setEvent.key = key setEvent.newValue = val window.dispatchEvent(setEvent) } else { let setEvent = new Event('setItemEvent') setEvent.key = key setEvent.newValue = val window.dispatchEvent(setEvent) } signSetItem.apply(this, arguments) } }
export const monitorDispatchEvent = (callback) => { //2 ** 放到 监听的页面 去执行 mounted // window全局监听localStorage的setItem事件以及时更新 window.addEventListener('setItemEvent', function (e) { //1 监听自定义事件 不同页面监听不到 相同页面可以监听到 if (callback) { //2 router 守护里触发 修改 需要监听 setItemEvent 自定义事件 callback(e); // e.key e.newValue } }) window.addEventListener('storage', function (e) { // 1 原生事件 不同页面可以监听到 相同页面 监听不到 if (callback) { // 2 a 页面修改 b页面监听 需要使用 storage原生事件 监听得到 callback(e); // e.key e.newValue } }) }
转载于:https://my.oschina.net/mirclewang/blog/3081437
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符
- ASP.NET页面执行顺序(第二个LoadViewState事件可以解释我新浪博客中的“HiddenField隐藏域的值改变时onvaluechanged的事件触发问题”一文的问题)
- 移动端h5页面不同尺寸屏幕适配兼容方法
- jQuery监听文本框值改变触发事件(propertychange)
- 开发日志:js当文本框输入非中文字符时,提示只能输入中文并将非中文字符清空【兼容IE、FF,适用于当文本框内容改变就立刻触发事件的其他功能性需求】
- H5 中监听页面滚动事件,判断滚动方向的方法
- 实时监听js改变value,触发事件,跨浏览器支持
- H5页面可见性改变(visibility change)事件
- js跨页面触发事件,利用storage监听事件
- 离开页面前onbeforeunload事件在火狐的兼容并且提交不触发
- javascript事件触发、监听和其游览器兼容问题
- vue之在页面中监听键盘的Enter键来触发某个按钮事件
- iOS监听H5页面goBack返回事件问题
- vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
- JS 当前页面监听localStorage的更新事件
- 由页面脚本改变一个组件值所触发的事件
- H5页面监听回退事件
- 简单粗暴方式解决H5移动端页面滚动的时候触发touchend事件
- js监听页面的scroll事件,当移到底部时触发事件
- 设置监听class改变事件,由原来的设置单个按钮点击触发方法onclick=“方法()”改为addEventListener