如何通过javascript检测用户是否“闲置”?

时间:2010-11-04 23:01:25

标签: javascript dom javascript-events mouse

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

我的想法是检查用户是否移动鼠标X秒。我怎么能做到这一点?

4 个答案:

答案 0 :(得分:14)

您可能希望收听以下部分或全部事件:

mouseMove,mouseClick,mouseUp,mouseDown,keyDown,keyUp,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);
}

答案 1 :(得分:5)

我认为您正在搜索此内容:https://github.com/jasonmcleod/jquery.idle

答案 2 :(得分:1)

答案 3 :(得分:1)