页面过期计时器实现

本文介绍了如何在Vue项目中实现页面过期计时器,当页面长时间无操作时,自动跳转到登录页面并显示提示。通过监听鼠标移动和键盘操作,设置Timer,并提供开启和关闭Timer的方法。在实现过程中,特别强调了需要在窗口级别设置Timer,并确保在关闭时清除并赋值为null。
摘要由CSDN通过智能技术生成

最近做了一个需求,就是页面在长时间不操作时,要跳转到登录页面并且弹出提示。

需求梳理

  1. 监听鼠标移动以及键盘操作。
  2. 设置timer,timer到达指定值后进行跳转并提示。
  3. 开启timer并且关闭timer

项目背景

vue项目,引入element-ui插件。

实现

监听事件
	// 监听鼠标
	document.onmousemove = (event) => {
      let x1 = event.clientX
      let y1 = event.clientY
      if (this.x !== x1 || this.y !== y1) {
        this.count = 0
      }
      this.x = x1
      this.y = y1
    }
    // 监听键盘
    document.onkeydown = () => {
      this.count = 0
    }
    // 监听Scroll
    document.onscroll = () => {
      this.count = 0
    }
设置Timer
cookieTimeout () {
  // 判断用户30分钟无操作就自动登出
  let outTime = 30
  this.count++
  if (this.count === outTime * 60) {
    if (getCookie('token') !== null) {
      resetStorage()
      this.clearTimer()
      this.$router.replace({name: 'Login'})
    } else {
      this.count = 0
    }
  }
}
开启/关闭Timer
clearTimer () {
  clearInterval(window.myTimer)
  window.myTimer = null
},
setTimer () {
  this.count = 0
  if (!window.myTimer) {
    window.myTimer = window.setInterval(this.cookieTimeout, 1000)
  }
}

一定要设置window的timer并且不仅要clear还要将其赋值为null。
然后在需要的地方set和clear就可以啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值