JavaScript 实现用户活跃度检测:监听交互事件与超时判定

作者:微光

时间:2026-10-31

浏览:166

本文详解如何利用 JavaScript 判断用户是否处于活跃状态。通过监听鼠标移动、点击、键盘输入等交互事件,重置定时器以检测超时。设定阈值(如5秒)后,若未检测到操作则判定为非活跃,否则保持活跃状态。

文章目录

在某些场景下,我们需要在网页端检测用户是否处于非活跃状态。如果用户在一段时间内未进行任何页面操作,系统应将其判定为非活跃。在 JavaScript 中,可以通过监听鼠标或键盘相关的事件来实现对用户活跃状态的判断。

案例演示

在线演示 - 使用 JS 判断用户是否处于活跃状态

案例演示

实现代码

该案例展示了如何获取用户的活跃状态。时间阈值设定为5秒,若超过该时间段内没有任何操作,则判定为非活跃;反之,则视为正在活跃中。

html

<p id="userState"></p>

js

//活跃状态,true活跃中,false非活跃
let state = false;
//定时器
let timer = null;
//非活跃判定阈值,5秒没有任何活动表示非活跃
let timeout = 5000;
//用于展示状态信息的html元素
let userStateEl = document.getElementById('userState');
//批量添加事件监听
[
    'mousemove',    //鼠标移动
    'mousedown',    //鼠标按下
    'touchstart',   //触摸屏幕(移动端)
    'wheel',        //鼠标滚轮
    'resize',       //页面尺寸变化
    'keydown',      //键盘输入
]
.map(event =>{
    window.addEventListener(event, onActive)
})
//触发活跃中
function onActive(){
    //更新状态
    state = true;
    renderState();
    //重置定时器
    clearTimeout(timer);
    timer = setTimeout(() =>{
        state = false;
        renderState();
    }, timeout);
}
//更新状态信息
function renderState(){
    if(state){
        userStateEl.textContent = "活跃中 "
    } else {
        userStateEl.textContent = "❌非活跃状态"
    }
}
//立刻触发一次活跃中
onActive();

下载案例源码

至此,关于如何使用 JS 判断用户是否处于活跃状态的介绍已结束。如需了解更多相关内容,请搜索本站过往文章或继续浏览下方的相关文章。感谢大家的支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章