js 实现监听页面一段时间内没有操作,执行退出、默认动画等其他功能
有时会有这种需求:当用户在指定时间内没有对页面进行任何操作,则执行默认的动画,或者退出系统。
实现这种功能只需要设置一个倒计时,当监听到 keydown、mousemove、mousewheel、click 等事件时,重置倒计时。若倒计时为 0 时,触发相应事件,执行制定操作即可。
监听的事件可以根据实际需要进行修改。
// 指定倒计时
const time = 5
export default {
data() {
return {
intervalId: null,
waitTime: time
};
},
mounted() {
this.initCountdown();
},
methods: {
// 初始化倒计时,开启监听
initCountdown() {
this.intervalId = setInterval(this.handleCountdown, 1000);
const body = document.querySelector('html');
body.addEventListener("click", this.resetCountdown);
body.addEventListener("keydown", this.resetCountdown);
body.addEventListener("mousemove", this.resetCountdown);
body.addEventListener("mousewheel", this.resetCountdown);
},
// 执行倒计时,执行指定任务
handleCountdown() {
this.waitTime--;
// 倒计时结束
if (this.waitTime <= 0) {
this.doInspection();
if (this.intervalId) {
clearInterval(this.intervalId);
}
}
},
// 重置倒计时
resetCountdown() {
// TODO 重置倒计时之前先把之前的状态关闭
// exp: 比如关闭动画等
this.waitTime = time;
if (this.intervalId) {
clearInterval(this.intervalId);
}
this.intervalId = setInterval(this.handleCountdown, 1000);
},
// 计时结束后的操作
doInspection() {
// TODO 计时结束后的操作
// exp: 比如执行动画等
console.log('doInspection');
}
}
};