vue页面监听是否置为后台或可见状态问题
作者:钢铁熊猫33
这篇文章主要介绍了vue页面监听是否置为后台或可见状态问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
vue页面监听是否置为后台或可见状态
使用场景
- 微信公众号网页中使用了弹幕,当微信在后台时,停止弹幕程序的执行
- 页面有定时任务执行时,除了退出页面要停止外,当页面在后台时,也可以清除定时任务,当可见时,再重新启动
推荐插件
vue-visibility-change
使用方式
安装
npm i vue-visibility-change
全局使用
import Vue from 'vue' import visibility from 'vue-visibility-change' Vue.use(visibility) const listenPageVisible = visibility.change((evt, hidden) => { console.log('隐藏: ' + hidden) })
局部使用
<template> <div v-visibility-change="listenVisible"></div> </template> <script> export default { methods: { listenVisible(evt, hidden) { console.log('隐藏: ' + hidden) } } } </script>
h5监听页面进入后台
方法:
export const pageChangeShowHide = function(){ let hidden,state,visibilityChange; if(typeof document.hidden !== 'undefined'){ hidden = 'hidden'; state = 'visibilityState'; visibilityChange = 'visibilitychange'; }else if(typeof document.mozHidden !== 'undefined'){ hidden = 'mozHidden'; state = 'mozvisibilityState'; visibilityChange = 'mozvisibilitychange'; }else if(typeof document.msHidden !== 'undefined'){ hidden = 'msHidden'; state = 'msvisibilityState'; visibilityChange = 'msvisibilitychange'; }else if(typeof document.webkitHidden !== 'undefined'){ hidden = 'webkitHidden'; state = 'webkitvisibilityState'; visibilityChange = 'webkitvisibilitychange'; } return { hidden,state,visibilityChange } }
页面中使用:
this.$nextTick(() => { let { hidden, state, visibilityChange } = common.pageChangeShowHide() document.addEventListener(visibilityChange, ()=> { // 页面变为可见时触发 if (document[state] == 'visible') { this.memberdayActivityInfo() } }); })
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。