如何解决鼠标/键盘无效?如果处于活动状态则执行功能,并且仅每秒执行一次
| 我正在使用PHP和jquery制作用户计数脚本,我想有一种方法来判断用户是否处于非活动状态。$.mousemove(function(){
//get php to update time on user
});
但是我应该如何设置它,使其不会在每次移动时更新,而是每1秒更新一次?像这样?
$.mousemove(function(){
//get php to update time on user
$.delay(1000);
});
然后我还将添加具有相同功能的按键功能,以便我还可以判断键盘是否处于活动状态。
解决方法
希望这是自我解释,并希望它能起作用!当用户移动鼠标时,这会立即通知服务器,假设没有在超过一秒钟的时间内定期通知服务器。
我们安排
activityNotification()
每秒钟运行一次(使用类似jQuery计时器或setInterval(func,time)
函数的功能),以便尽可能快地响应以下时间轴:
0毫秒:用户移动鼠标,通知服务器
立即
657毫秒:用户按键,
但通知服务器尚为时过早
活动
1000毫秒:
activityNotification()的运行方式为
预定,看到我们有
我们尚未通知的活动
服务器关于,通知服务器
2000毫秒:activityNotification()的运行方式为
预定的,但没有任何通知服务器的信息
2124毫秒:用户移动鼠标,自上次通知服务器以来的1.124秒,服务器立即收到通知
码:
//Track the last activity you saw
var lastActivity = 0;
//Remember the last time you told the server about it
var lastNotified = 0;
//Determines how frequently we notify the server of activity (in milliseconds)
var INTERVAL = 1000;
function rememberActivity() {
lastActivity = new Date().getTime();
activityNotification();
}
function activityNotification() {
if(lastActivity > lastNotified + INTERVAL) {
//Notify the server
/* ... $.ajax(); ... */
//Remember when we last notified the server
lastNotified = new Date().getTime();
}
}
setInterval(\'activityNotification()\',INTERVAL);
$.mousemove(function() {
//Remember when we last saw mouse movement
rememberActivity();
});
$.keyup(function() {
//Remember when we last saw keyboard activity
rememberActivity();
});
请记住,并非所有用户都会启用JavaScript,这会导致移动设备上的电池严重耗电。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。