Vue -- 监听隐藏显示窗口后重新请求数据
为什么会用到监听隐藏显示窗口的事件呢?
主要是因为页面中有计时器,窗口隐藏页面隐藏后,计时器暂停,这里使用了重新获取数据,重新启动倒计时的功能解决,所以需要监听事件。
methods: {
visibilityState() {
if (document.visibilityState === 'visible' || event.persisted) {
console.log('欢迎回来!')
// this.$router.go(0)
this.onLoad()
// do something
// 继续
}
// if (document.visibilityState === "hidden") {
// console.log("不要走!")
// do something else
// 暂停
// }
}
},
mounted() {
window.addEventListener('visibilitychange', this.visibilityState)
window.addEventListener('pageshow', this.visibilityState)
},
beforeDestroy() {
window.removeEventListener('visibilitychange', this.visibilityState)
window.removeEventListener('pageshow', this.visibilityState)
}
下面的函数封装,监听效果不理想,最终使用的是上面的方法
mounted() {
this.pageListener(this.handlePage, true)
},
beforeDestroy() {
this.pageListener(this.handlePage)
},
methods: {
handlePage(event) {
console.log(event, document.visibilityState)
if (document.visibilityState === 'visible' || event.persisted) {
console.log('欢迎回来!', event.persisted)
this.onLoad()
}
},
pageListener(callback, addListener) {
if (addListener) {
console.log('pageListener addListener')
window.addEventListener('pageshow', callback, false);
document.addEventListener('visibilityChange', callback, false);
} else {
console.log('pageListener remove')
// 移除页面监听
this.pageShowListener(callback, false);
this.pageVisibilityListener(callback, false);
}
},
pageShowListener(callback) {
window.removeEventListener('pageshow', callback)
},
pageVisibilityListener(callback) {
document.removeEventListener('visibilitychange', callback)
}
}
分类:
vue2
, JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2020-08-31 百度echarts饼图百分比的计算规则---最大余额法