1、在utils新建一个astrict.js
// 引入路由和storage工具函数
import router from "../router"
var lastTime = new Date().getTime() //点击的最后一次时间
var currentTime = new Date().getTime() //现在时间
var timeOut = 60 * 60 * 1000 //设置超时时间: 60分钟
window.document.onclick = function() {
//监听页面的点击事件,点击一次向sessionStorage中存储点击的时间
sessionStorage.setItem("lastTime", new Date().getTime())
}
//封装一个函数 30秒调用一次
function checkTimeout() {
currentTime = new Date().getTime() //更新当前时间
var lastTime = sessionStorage.getItem("lastTime"); //获取最后一次点击的时间
if (currentTime - lastTime > timeOut) { //判断是否超时
// 跳到登陆页
if (router.history.current.fullPath == '/') return // 当前已经是登陆页时不做跳转
router.push({
name: 'Login'
})
}
}
export default function() {
/* 定时器 间隔30秒检测是否长时间未操作页面 */
window.setInterval(checkTimeout, 30000);
}
2、在main.js中为vue注册事件
import Astrict from '@/utils/astrict'
Vue.use(Astrict)
**原理:**30秒检查一次 如果现在的时间-最后一次点击的时间>设定的时间 的话 就跳转路由