现在的需求是,如果页面长时间未操作(比如 15 分钟),显示一个对话框。未操作可定义为鼠标未移动以及键盘未按键。切换到其他页面再切换回来视为未操作。
let timer = setTimeout(callback, 15 60 1000)
// 监听点击/按键事件,addEventListener 的回调可以加个防抖
window.addEventListener(事件, () => {
clearTimeout(timer)
timer = setTimeout(callback, 15 * 60 * 1000)
})
随便搜一个看起来还行的防抖函数,把它的时间间隔改成15分钟、触发条件则是你需要监听的那些事件,基本就满足这个需求了。
另外一种实现方案,计时不准确,但也合用。就是设定一个全局的计时器,每隔一段时间去查看一个全局变量,这个全局变量存储的是用户上一次操作的时间,拿当前时间减去上次操作的时间,如果大于十五分钟的话,就停止计时并弹出提示,与之配合的是需要监听用户事件,并把事件的时间保存到那个全局变量。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.5k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
定义一个全局的计时器,每次操作重置时间。但是一般没有这样设计的,因为对性能损耗太多,而且没有什么意义。你完全可以等到用户下次操作的时候再给提示,不操作就拉倒了。