我正在开发一个“实时”Web应用程序,它每10秒向服务器发送一次AJAX请求。显然这是带宽密集型的,我想知道是否有任何解决方案。
我的想法是检查用户是否移动鼠标X秒。我怎么能做到这一点?
答案 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)