在vue2.0项目中会遇到用户停留在某个页面长时间不操作的场景,针对此场景需要做某些操作。这边博文就讲讲是如何实现这个需求的。
直接上代码
DurationStay.js
export const DurationStay = {
data(){
return {
currentTime:"",
DurationOfStay:5*60*1000, //自定义的无操作时长5分钟
intervalTime:0
}
},
mounted(){
this.currentTime = new Date().getTime();
this.checkouttime();
document.addEventListener("keydown",this.resetStartTime);
document.addEventListener('touchstart',this.resetStartTime);
},
beforeDestroy(){
//离开页面要销毁事件,否则会影响跳转的下个页面
document.removeEventListener("keydown",this.resetStartTime);
document.removeEventListener("touchstart",this.resetStartTime);
if(this.intervalTime){
clearInterval(this.intervalTime);
}
},
methods:{
resetStartTime(){
this.currentTime = new Date().getTime();
},
checkouttime(){
this.intervalTime= setInterval(()=>{
let nowtime = new Date().getTime();
if(nowtime - this.currentTime > this.DurationOfStay){
//特别注意:在这里要用自己独有的弹窗,不要跟项目的其他弹窗一直,否则会影响页面中别的弹窗弹起的bug
this.$messagebox({
title: "温馨提示",
message: "页面停留太长,点击“刷新一下”获取最新价格和库存。",
confirmButtonText: "刷新一下",
closeOnClickModal:false,
}).then(()=>{
//这里可以自由发挥,根据需求去做
this.init();
});
return false;
}
},30000)
}
}
}
<script>
import { DurationStay } from './components/DurationStay';
export default {
mixins:[ DurationStay ],
data(){
return{}
}
}
</script>
亲测有效。