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

js · 浏览次数 : 0

小编点评

```html

``` **案例演示:** 当用户在网页上进行任何操作,例如点击按钮、输入文字等,就会触发`mousemove`、`mousedown`等事件,并调用`onActive()`函数更新状态为`true`。 当用户长时间没有在页面上进行任何操作,例如超过5秒没有活动,就会触发`timer`定时器,并将状态重置为`false`,并调用`renderState()`更新页面显示为“❌非活跃状态”。

正文

有时候,我们需要在网页判断用户是否处与非活跃状态,如果用户长时间没有在页面上进行任何操作,我们则判定该用户是非活跃的。 在 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 判断用户是否处于活跃状态相似的内容:

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

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

【技巧】JS代码这么写,前端小姐姐都会爱上你

这篇文章分享了JavaScript编程中的实用技巧,包括解构赋值的短路语法避免错误、深度解构及默认值设定,以及数组操作如条件添加元素、获取最后一个元素和使用includes优化条件判断。此外,还介绍了从URL解析参数、页面滚动功能和获取滚动距离的JS片段。作者提倡使用这些技巧提升代码质量和效率,并邀...

如何使用Node.js、TypeScript和Express实现RESTful API服务

Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Express是一个保持最小规模的灵活的 Node.js Web应用程序开发框架,为Web和移动应用程序提供一组强大的功能。使用Node

如何使用 Node.js Stream API 减少服务器端内存消耗?

摘要:让我们看一个示例,展示在内存消耗方面,采用流的编程思路带来的巨大优越性。 本文分享自华为云社区《使用 Node.js Stream API 减少服务器端内存消耗的一个具体例子》,作者:Jerry Wang 。 HTTP 响应对象(上面代码中的 res)也是一个可写流。这意味着如果我们有一个表示

web3.js:使用eth包

原文在这里 简介 web3-eth包提供了一套强大的功能,可以与以太坊区块链和智能合约进行交互。在本教程中,我们将指导您如何使用web3.js版本4的web3-eth包的基础知识。我们将在整个示例中使用TypeScript。 步骤 1:配置环境 在我们开始编写和部署我们的合约之前,我们需要设置我们的

如何使用webgl(three.js)实现煤矿隧道、井下人员定位、掘进面、纵采面可视化解决方案——第十九课(一)

three.js、webgl、3D煤矿隧道、三维井下人员定位、掘进面三维可视化、纵采面可视化、采集面可视化展示、设备检测、数字孪生、物联网3D、3d建筑、3d库房,bim管理系统

如何使用zx编写shell脚本

前言 在这篇文章中,我们将学习谷歌的zx库提供了什么,以及我们如何使用它来用Node.js编写shell脚本。然后,我们将学习如何通过构建一个命令行工具来使用zx的功能,帮助我们为新的Node.js项目引导配置。 编写Shell脚本的问题 创建一个由Bash或者zsh执行的shell脚本,是自动化重

5 分钟理解 Next.js Static Export

5 分钟理解 Next.js Static Export 在本篇文章中,我们将介绍 Next.js 中的 Static Export 功能,以及它是如何工作的。我们将介绍一些相关的基本概念,以及在 Next.js 中如何使用 Server Components 和 Client Components

如何在forEach内使用异步调用 async/await

翻自: How to use async and await in a forEach JS loop? https://learn.coderslang.com/0144-how-to-use-async-and-await-in-a-foreach-js-loop/ 事实上我们无法在 forEa

module.exports和exports,应该用哪个

> 在 Node.js 编程中,模块是独立的功能单元,可以在项目间共享和重用。作为开发人员,模块让我们的生活更轻松,因为我们可以使用模块来增强应用程序的功能,而无需亲自编写。它们还允许我们组织和解耦代码,从而使应用程序更易于理解、调试和维护。 在这篇文章中,我将介绍如何在 Node.js 中使用模块