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

Dan*_*tti 8 javascript mouse dom javascript-events

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

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

zzz*_*Bov 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);
}
Run Code Online (Sandbox Code Playgroud)

  • @DanielS,我正在审查我最早的一些答案(这是其中之一),看看我可以做出哪些改进,而我只是在做一个注释来添加关于[debouncing]的信息(http://unscriptable.com/2009/03/20/debouncing-javascript-methods /)这个答案因为它是合适的. (2认同)