2010-11-04 16 views
8

Zajmuję się tworzeniem aplikacji internetowej "działającej w czasie rzeczywistym", która wysyła żądania AJAX do serwera co 10 sekund. Oczywiście jest to bardzo wymagająca przepustowość i chciałbym się dowiedzieć, czy jest na to jakieś rozwiązanie.Jak wykryć, czy użytkownik jest "bezczynny" z javascript?

Mój pomysł polega na sprawdzeniu, czy użytkownik nie porusza myszą przez X sekund. Jak mogę to zrobić?

Odpowiedz

5
+0

Dokładnie to, czego szukałem. Prosty i skuteczny. Dzięki! –

+1

jquery.idle tylko zegarki dla zdarzeń mousemove. Więc jeśli jesteś zadowolony z oznaczania użytkownika jako bezczynnego tylko dlatego, że nie poruszył myszą, to powinno to działać dobrze. Możesz jednak również obserwować inne zdarzenia, takie jak wprowadzanie za pomocą klawiatury. – pinkfloydx33

+0

To jest poprawne i jest wszystkim, czego potrzebuję. –

13

może chcesz słuchać na niektóre lub wszystkie z poniższych zdarzeń:

mouseMove, kliknięcie myszką, mouseUp, mouseDown, keyDown, keyUp, przyciśnięcie

ustawić timer, aby wyłączyć się po pewnym czasie bezczynności (60 sekund?), A to spowoduje wyłączenie przełącznika, upewnij się, że sprawdzasz przełącznik przed zapytaniami ajax.

Idealnie wykładniczo ograniczysz swoje wywołania ajaxowe do jakiejś niskiej wartości, im dłużej użytkownik pozostanie bezczynny.

$(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); 
} 
+0

Naprawdę lubię twoje pomysły. Dziękuję Ci! –

+1

To wymaga debianowania. – zzzzBov

+0

Huh? Co masz na myśli? –

Powiązane problemy