利用用户空闲时间
一般的聊天软件都会有一个很方便的功能,当用户长时间不操作时会自动设置状态为离开,这样其他人就不会因为对方迟迟不回复而胡乱猜想。
以前也做过web聊天系统,那么加入这个功能应该会锦上添花
,当你空闲时候告诉你的好友我可能离开了。
那么关键是怎么判断当前用户是否空闲,一般网页接受两种输入设备的信号:鼠标,键盘,会触发相应的事件 keydown mousemove,那么我们只要
全局监控这两种事件就可以了。
具体逻辑:
初始设置空闲
当用户有动作
如果有定时器设置就清空,进入繁忙了
如果当前是空闲,就设置为繁忙,通知繁忙处理程序
否则就设置定时器,一段时间后设置当前状态为空闲,并通知空闲处理程序
效果图:
写段代码测试一下: (附件示例)
<script type="text/javascript" src="ext-core-min.js"></script>
<div id="test">
<input id="testInput" />
</div>
<script type="text/javascript">
Ext.ns("Ext.ux");
Ext.ux.IdleJudger=(function(){
//private:当前是否空闲
var idle=true;
var idleTimer;
var pub = {
//多长时间没操作会被通知idle,可 Ext.ux.IdleJudger.idleDuration 自己设置
//for override
idleDuration:5000,
//状态查询
//readonly
isIdle:function(){return idle;},
//是否启用该功能,自己设置
//for override
enable:true,
//用户开始空闲通知,自己设置
//for override
idleHandler:function(){console.log("i start idle !");},
//用户开始繁忙通知,自己设置
//for override
busyHandler:function(){console.log("i start busy !");},
start:start
};
function setIdle(){
idle=true;
if(pub.idleHandler) pub.idleHandler();
}
function check(){
if(!pub.enable) return;
//前段设置的空闲取消
clearTimeout(idleTimer);
if(idle) {
idle=false;
if(pub.busyHandler)pub.busyHandler();
}
//pub.idleDuration 后设置空闲
idleTimer=setIdle.defer(pub.idleDuration);
}
function start() {
//两种输入设备触动了
Ext.getDoc().on("keydown",check);
Ext.getDoc().on("mousemove",check);
}
return pub;
})();
</script>
<script type="text/javascript">
Ext.onReady(function(){
//set up config
Ext.ux.IdleJudger.idleDuration=5000;
var logger=Ext.getDom("test");
Ext.ux.IdleJudger.idleHandler = function(){
logger.innerHTML+=new Date()+" : i start idle <br/>";
};
Ext.ux.IdleJudger.busyHandler = function(){
logger.innerHTML+=new Date()+" : i start busy <br/>";
};
/*
can not stop it ,that's good
*/
Ext.get("testInput").on("mouseover",function(evt){
evt.stopEvent();
});
Ext.get("testInput").on("keydown",function(evt){
evt.stopEvent();
});
//... other config
//start monitor
Ext.ux.IdleJudger.start();
});
</script>
- 大小: 8.5 KB
分享到:
相关推荐
在配合`ifvisible.js`使用时,这些特性可以更好地与用户交互状态结合,例如在用户空闲时加载预缓存的数据或播放背景音乐。 `css`(层叠样式表)用于定义网页的布局和样式。当配合ifvisible插件,可以实现根据用户...
用户代理空闲状态回调此库/ npm帮助程序可在浏览器上添加用户空闲状态侦听器设置安装idle-state-listener : npm install idle-state-listener --save-dev演示版网址: : 例子var stateManager = require ( 'idle-...
描述用于报告用户在浏览器中的活动(离开、空闲、不看网页等)的微型 javascript 库。 它独立于任何其他 javascript 库,例如 jquery。 您可以在查看演示变更日志0.0.2 (19-11-14) - 凉亭支撑0.0.2 (7-03-12) - 为...
它利用了浏览器的空闲时间,智能地预加载用户视口(viewport)内可能点击的链接,从而减少用户在浏览网站时等待新页面加载的时间,提供更流畅的用户体验。这个工具尤其适用于内容丰富的网站,如博客、新闻门户或电子...
在这个项目中,我们可以利用JavaScript库如D3.js或Three.js来绘制三维机柜模型,显示每个U位的状态,比如空闲、已占用或者即将过热。这些库提供了强大的数据绑定和图形渲染能力,使得动态更新和用户交互变得简单。 ...
3. **数据管理**:应用可能使用JavaScript对象或者数组来存储座位的状态(如已预订、空闲等)和用户的预订信息。这允许程序快速地查找和修改座位状态。 4. **用户反馈**:JavaScript还可以用于提供实时的用户反馈,...
这种情况下,为了优化性能和减少不必要的资源消耗,开发者可以利用浏览器提供的页面可见性API来检测用户是否与当前页面交互。 页面可见性API是一个标准化的接口,允许开发者检测浏览器选项卡的状态——是可见的...
setIdle()监视JS应用程序,以了解用户何时空闲并触发事件。 var idle = setIdle(()=> doSomething('awesome')); 安装NPM> npm install setidle Bower> setIdle()监视JS应用程序中用户何时空闲并触发事件。...
JavaScript最初设计时为了确保用户界面的响应性,选择了单线程执行模型。这意味着在同一时间只能执行一个任务,其他任务则需要排队等待。这种模型避免了多线程可能导致的竞态条件和死锁问题,但同时也带来了挑战,...
1. 初始化棋盘:使用JavaScript创建棋盘数组,存储每个格子的状态,如空闲、己方棋子、对方棋子等。 2. 掷骰子:使用Math.random()函数生成1~6的随机数,模拟骰子的点数。 3. 棋子移动:根据掷出的点数,更新棋盘...
本文将深入探讨JavaScript的单线程模型以及与之相关的并发机制。 在计算机编程中,线程是程序执行的基本单元,一个进程可以包含多个线程。多线程意味着程序可以在同一时间执行多个不同的任务,而单线程则表示只有一...
JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它在构建动态、交互式的用户界面方面扮演着重要角色。在JavaScript中,理解树状结构和时间操作是提升编程能力的关键。 树状结构是一种数据结构,它模拟了...
本文将深入探讨JavaScript中的时间消耗,理解这些概念对于优化代码性能、提高用户体验至关重要。我们先从基础开始,逐步剖析JavaScript执行过程中涉及的时间消耗。 1. **解析与编译阶段**:当JavaScript引擎加载...
这个停车场管理应用程序JavaScript源代码提供了从用户界面交互、数据处理到后台逻辑的完整解决方案,对于学习Web开发,尤其是JavaScript全栈开发的开发者来说,是一个宝贵的资源。通过研究和理解这个项目,你可以...
综合以上,`ifvisible.js`是一个强大的JavaScript库,用于在用户空闲时触发特定行为,提高网页的交互性和效率。它通过监控用户活动并提供事件绑定,使开发者能够创建响应用户活动状态的应用。同时,结合`js特效`和`...
【宿舍洗衣机空闲提醒小程序】是一款专为学生宿舍设计的小程序,它利用现代信息技术,为用户提供实时的洗衣机使用状态查询和空闲提醒功能,极大地方便了学生在宿舍内安排洗衣时间,避免了等待和冲突。这款小程序的...