Как я могу определить, находится ли пользователь в «простое» с помощью JavaScript? - PullRequest
8 голосов
/ 05 ноября 2010

Я разрабатываю веб-приложение в режиме реального времени, которое отправляет запросы AJAX на сервер каждые 10 секунд. Очевидно, что это очень интенсивно использует пропускную способность, и я хотел бы знать, есть ли какое-либо решение для этого.

Моя идея - проверять, не двигает ли пользователь мышь в течение Х секунд. Как мне это сделать?

Ответы [ 4 ]

14 голосов
/ 05 ноября 2010

Возможно, вы захотите прослушать некоторые или все из следующих событий:

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);
}
5 голосов
/ 05 ноября 2010

Я думаю, вы ищете это: https://github.com/jasonmcleod/jquery.idle

1 голос
/ 07 января 2012
1 голос
/ 05 ноября 2010

http://docs.jquery.com/Tutorials:Mouse_Position Надеюсь, это поможет!

...