如何检测用户是否为;“闲置”;使用Javascript?

如何检测用户是否为;“闲置”;使用Javascript?,javascript,dom,dom-events,mouse,Javascript,Dom,Dom Events,Mouse,我正在开发一个“实时”web应用程序,它每10秒向服务器发送一次AJAX请求。显然,这是非常带宽密集型的,我想知道是否有任何解决方案 我的想法是检查用户是否在X秒内不移动鼠标。我如何才能做到这一点? 希望有帮助 我想您正在搜索以下内容:您可能需要收听以下部分或全部事件: mouseMove,mouseClick,mouseUp,mouseDown,keyDown,keydup,keyPress 设置一个计时器,使其在空闲一段时间(60秒?)后关闭,这将关闭您的交换机。请确保在ajax请求之前检查

我正在开发一个“实时”web应用程序,它每10秒向服务器发送一次AJAX请求。显然,这是非常带宽密集型的,我想知道是否有任何解决方案

我的想法是检查用户是否在X秒内不移动鼠标。我如何才能做到这一点?


希望有帮助

我想您正在搜索以下内容:

您可能需要收听以下部分或全部事件:

mouseMove,mouseClick,mouseUp,mouseDown,keyDown,keydup,keyPress

设置一个计时器,使其在空闲一段时间(60秒?)后关闭,这将关闭您的交换机。请确保在ajax请求之前检查交换机

理想情况下,当用户空闲的时间越长,您将以指数方式将ajax调用限制在某个较低的值

$(window).bind('mousemove click mouseup mousedown keydown keypress keyup submit change mouseenter scroll resize dblclick', someEvent);
var active = true,
  delay = 60000,
  timer = null;

function someEvent(e)
{
  active = true;
  if (timer) clearTimeout(timer);
  timer = setTimeout(function(t){
    active = false;
  }, delay);
}
还有一种方法:

使用Jquery:

正是我想要的。简单有效。谢谢idle仅监视mousemove事件。因此,如果您仅仅因为用户没有移动鼠标而满足于将其标记为空闲,那么这对您来说应该很好。但是,您可能还想查看其他事件,如键盘输入。此外,这对触摸界面不起作用,因为它们不会触发鼠标事件。非常喜欢您的想法。谢谢大家!@DanielS,我在回顾我最早的一些答案(这是其中之一),看看我能做些什么样的改进,我只是做了一个笔记,为这个答案添加信息,因为它是合适的。这是一篇非常有趣的文章。