2010-11-04 65 views
8

我正在開發一個「實時」web應用程序,它每10秒向服務器發送一次AJAX請求。顯然這是非常帶寬密集的,我想知道是否有任何解決方案。我如何檢測用戶是否與JavaScript「閒置」?

我的想法是檢查用戶是否在X秒內不移動鼠標。我怎樣才能做到這一點?

回答

5

我認爲你正在尋找這樣的:https://github.com/jasonmcleod/jquery.idle

+0

正是我一直在尋找。簡單而有效。謝謝! – 2010-11-04 23:25:58

+1

jquery.idle只監視mo​​usemove事件。所以,如果你只是因爲他們沒有移動鼠標而將用戶標記爲閒置,那麼這對你來說應該很好。但是,您可能還想要觀察其他事件,例如鍵盤輸入。 – pinkfloydx33 2010-11-04 23:27:13

+0

這是正確的,並且是我需要的。 – 2010-11-04 23:36:06

13

你可能要聽一些或全部的下列事件:

的mouseMove,鼠標點擊,mouseUp事件,鼠標按下,的keyDown,使用keyUp,按鍵

設置一個計時器在閒置一段時間(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); 
} 
+0

真的很喜歡你的想法。謝謝! – 2010-11-04 23:36:36

+1

這需要反彈。 – zzzzBov 2012-07-23 22:17:37

+0

咦?你什麼意思? – 2012-07-24 02:17:05