一、背景

我们平时做系统为了保证用户操作数据的安全性,很多时候当用户长时间不再操作电脑的时候,应该给用户自动退出系统,这样可以防止有别人使用电脑操作上一个用户的数据。

二、设计想法监听鼠标移动以及键盘操作。

设置timer,timer到达指定值后进行跳转并提示。

开启timer并且关闭timer

三、代码实现

设定一个计数值,利用js原生的事件,对鼠标,键盘进行监听,如果一有触发的鼠标,键盘的话,就将计数值清零,否则,计数值一直累加,当累加到一个目标值,即那个无操作退出系统的时间就可以触发退出系统函数。

完整的代码:

data () {

return {

count: 0

}

},

mounted () {

// 监听鼠标

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

}

this.setTimer()

},

// 最后在beforeDestroy()生命周期内清除定时器:

beforeDestroy () {

this.clearTimer()

},

methods: {

clearTimer () {

clearInterval(window.myTimer)

window.myTimer = null

},

setTimer () {

this.count = 0

if (!window.myTimer) {

window.myTimer = window.setInterval(this.cookieTimeout, 1000)

}

},

cookieTimeout () {

// 判断用户5分钟无操作就自动登出

let outTime = 5

this.count++

if (this.count === outTime * 60) {

this.$message({

message: '系统已经五分钟无操作,将在十秒后退出登录,如不想退出系统,请任意操作鼠标键盘...',

type: 'error'

})

setTimeout(this.logout, 10000)

// console.log('aaaa', this.count)

}

},

logout () {

// console.log('bbb', this.count)

if (this.count >= 5 * 60) {

sessionStorage.setItem('loginname', '')

this.$router.replace({name: 'Login'})

}

},

}

功能实现还是相对简单的,仅仅作为记录一下。

vue 离开页面时间_vue 前端页面无操作时,系统退出登录的定时器设计相关推荐

  1. Vue+elementUI从头开始构建前端页面(中篇-Table作妖)

    传送门:Vue+elementUI从头开始构建前端页面(前篇-Starter搭建) 传送门:Vue+elementUI从头开始构建前端页面(中篇-Table作妖) 传送门:Vue+elementUI从 ...

  2. 无盘服务器怎么安装游戏,看看我在农村网吧做无盘时系统与游戏安装的过程

    本帖最后由 雨竹 于 2011-7-18 10:13 编辑 看看我在农村网吧做无盘时系统与游戏安装的过程 我是一个小网管,在这个二线城市都算不上的一家小网吧管一些机器,位置蛮小哈,不过事也不多,倒是有 ...

  3. vue埋点 记录在前端页面停留时间

    import API from '@/modules/system/api/api_userTime' const router = new Router({mode: 'history',base: ...

  4. vue保存页面的值_vue前端页面跳转参数传递及存储

    不同页面间进行参数传递,实现方式有很多种,最简单最直接的方式就是在页面跳转时通过路由传递参数,如下所示. 路由传递参数 this.$router.push({ name: '跳入页面', params ...

  5. vue拖拽组件生成前端页面,vue组件拖拽自定义界面

    vue如何使用vuex,vuex是vuex.js文件吗 . vue有自己的脚手架构建工具vue-cli,使用起来非常方便,使用webpack来集成各种开发便捷工具,比如:代码热更新,修改代码之后网页无 ...

  6. vue打包部署后,前端页面刷新后丢失

    原因: 路由配置里模式不正确 找到router文件夹,里边文件中,找到 mode: 'history' 把这行注释掉

  7. vue用户行为收集_Vue前端数据采集 埋点 追踪用户系列行为

    埋点分析,是网站分析的一种常用的数据采集方法.数据埋点分为初级.中级.高级三种方式.数据埋点是一种良好的私有化部署数据采集方式. 埋点技术如何采集数据,有何优缺点? 数据埋点分为初级.中级.高级三种方 ...

  8. vue字符串转时间_vue总结01

    Vue也用这么久了,原理之类的文章也看了不少.今天又精读了一篇头条上的文章,自己也总结记录一下.虽然吧,该学vue3了,不过想转React了哈哈.不扯了,还是先总结下Vue这个框架吧. 官方介绍: V ...

  9. 解决html页面闪烁,解决前端页面闪烁问题(转载)

    修改 Class 而不是 Style 我在不久前做过一个导航栏,要求其滚动到屏幕顶端后固定.很常见.开始的时候没问题,很快就可以搞定. nav { position: absolute; top: 6 ...

最新文章

  1. PostgreSQL 客户端乱码问题
  2. 印度市场,圆不了二线国产手机的美梦
  3. LUT Utility for FCPX(Luts调色文件加载工具)支持M1
  4. 1206封装电容在物料可靠性设计比较低
  5. 如何固定最小宽度_如何使用更新的HTML和CSS函数创建响应式设计
  6. java openresty 调用_玩转 OpenResty 协程 API
  7. java主动对象模式_POCO的主动对象
  8. html获取一条一条的li,html – 在一个li中定位一个span
  9. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day1-Java入门
  10. 俄罗斯方块Python
  11. vue 地址区域选择组件
  12. sodp软件如何导入多个工作面信息_平方英尺和面积计算软件:Metes and Bounds for Mac...
  13. 科赫小雪花python实验报告_基于python绘制科赫雪花
  14. 电视hdr测试软件,HDR是什么意思 如何打开电视机的HDR10模式
  15. 基于python的酒店管理系统_基于Web酒店管理系统的设计与实现
  16. C++ 167. 两数之和 II 633. 平方数之和
  17. 多维正态随机变量的条件概率密度函数推导
  18. 《从零开始的 RPG 游戏制作教程》第十四期:自制技能
  19. 怎样使用更新域计算机,如何使用Word快捷键来输入当前时间和更新时间域?
  20. 区分网络管理员和网络工程师

热门文章

  1. Netty学习总结(5)——Netty之TCP粘包/拆包问题的解决之道
  2. python特性描述_详解 Python 最优雅的特性之一 — 描述符
  3. ionic 压缩和上传视频文件
  4. 【Java】深入理解Java虚拟机的读书笔记
  5. 并发编程之ReentrantLock
  6. 面试宝典系列-什么是心跳包机制
  7. maven scope使用和理解
  8. 半自动化运维之快速连接到指定环境(一)
  9. 数组常见异常 学习笔记
  10. live writer不能首行缩进的问题