首页 > 其他分享 >如何使用 JS 判断用户是否处于活跃状态

如何使用 JS 判断用户是否处于活跃状态

时间:2024-05-16 21:52:39浏览次数:24  
标签:状态 鼠标 用户 JS 活跃 state let

有时候,我们需要在网页判断用户是否处与非活跃状态,如果用户长时间没有在页面上进行任何操作,我们则判定该用户是非活跃的。 在 javascript 中我们可以通过监听某些鼠标或键盘相关的事件来判定用户是否在活跃中。

案例演示

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

实现代码

案例演示了如何获取用户活跃状态,时间阈值定为5秒,超出该阈值没有操作表示非活跃,否则属于正在活跃中

js

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

html

//活跃状态,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,活跃,state,let
From: https://www.cnblogs.com/liuhangui/p/18196824/tracks-whether-the-user-is-being-inactive-in-

相关文章

  • 日志报错监控,nodejs实现服务器日志监控,发现指定错误,发送到微信群
    nohupnodelog2.js>log_output.log2>&1&constfs=require('fs');constrequest=require('request');constschedule=require('node-schedule');constmoment=require("moment-timezone");constl......
  • NODEJS通过发送json数据查询目标服务,实现服务器状态监控,发现异常发送到微信群提醒
    root@aea87fa6e6a2:/home/node#catlogin2.jsconstrequest=require('request-promise');constmoment=require('moment');constcron=require('node-cron');process.env.TZ='Asia/Shanghai';//设置时区为上海时区constrp......
  • createPortal:允许你将 JSX 作为 children 渲染至 DOM 的不同部分。
    官网createPortal(children,domNode,key?)import{createPortal}from'react-dom';//...<div><p>这个子节点被放置在父节点div中。</p>{createPortal(<p>这个子节点被放置在documentbody中。</p>,document.body)}</div&......
  • 基于exceljs的前端多级表头的导出
    磨了两天半磨出来的功能exceljs官网https://github.com/exceljs/exceljs/blob/HEAD/README_zh.md贴个demo图 上代码:引入:importExcelJSfrom'ExcelJS'; 数据:data(){return{tableColumn:[{prop:'a',label:......
  • 微信开发-主动推送模板消息给特定用户
    其实也比较简单,设置模板后推送即可,具体官方说明文档如下:接口调用请求说明http请求方式:POSThttps://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token=ACCESS_TOKENPOST数据说明如下:{"template_id":"Dyvp3-Ff0cnail_CDSzk1fIc6-9lOkxsQE7ex......
  • 上百页html生成pdf解决方案(bookjs-easy)简洁完整版(包含接收服务端返回路径参数)
    依靠1:客户端插件 bookjs-easy(点击直接跳转官网)2:服务端插件screenshot-api-server实测105页的pdf,生成耗时40s左右,文件大小16MB项目需求:生成一个上百页的pdf,这个pdf包含表格、折线图、图片等,且横竖幅页面交叉 bookjs-easy官网的文档对于第一次看的人来说并不友好(建议第......
  • labelme标注后的图片切成小图和小json
    splitMission.py和generateLabel.py两个脚本复制到4张图片和json所在的文件夹(最好是4的倍数因为默认以4个线程并行执行)中D:\pic\zhongwei\to_test\4picsplitMission.py点击查看代码importcv2importosimportbase64fromPILimportImageimportPILimportioimport......
  • JS — webscoket详解
    一.基本概念WebSocket是一种在Web浏览器和服务器之间建立全双工通信的协议。它允许网页实时地发送和接收数据,而不需要页面刷新或像传统HTTP协议那样的轮询操作。WebSocket使用HTTP协议进行握手,并通过Upgrade头字段指定从HTTP到WebSocket的转换。一旦握手成功,WebSocket连接就会......
  • 2024 jscpc B题 Area of the Devil 题解
    题目链接:AreaoftheDevil算不在题目说的区域内的面积,直接算是比较麻烦的,这里给一个朋友直接算画的图,其实画出区域以后也算好算,当然官解提到的容斥去算更好写。一共有五个空余的区域,我们考虑这五个区域怎么计算,图一是直接画出的所有区域的并集,图二则是五角星处于边界情况时,图......