2012-03-23 85 views
1

我有一個每10秒更新一次的Live Feed JQuery框,並將網站的最新評論置頂。這工作正常:jquery發出一個Ajax請求,調用一個PHP,它返回新的項目或沒有。如何僅在活動選項卡上更新我的實時動態列表更新或在選項卡再次激活時更新它?

這個盒子就像一個側欄,它在我網站的每一頁上。我的問題是,如果用戶在網站上打開很多頁面,他打開的每個選項卡都會執行此自動刷新,直到他關閉該選項卡。因此,即使Live Feed已經過優化,並且其後面的SQL查詢速度很快(每個查詢爲0.0005秒),但每個打開多個頁面的幾十個用戶都會成爲問題。此外,如果用戶使用一些打開的選項卡打開瀏覽器,並開始瀏覽其他地方,或觀看電影,他們將永遠更新,或直到他關閉它們。

那麼對此有什麼好的解決方案?只有在其選項卡/窗口可見/活動的情況下,我纔可以更新我的提要?如果它沒有活動並且現在再次激活,是否會發生事件?

回答

0

嘗試在窗口對象上添加onFocus事件以觸發更新並添加onBlur以停止更新您的實時供稿。

由於您使用jQuery的你可以這樣做

$(window).('focus',function(){ 
    //do updates 
}) 

$(window).('blur',function(){ 
    //stop updates 
}) 
+0

這些是一次性事件還是屬性?我的意思是「//更新」部分將持續工作,直到窗口處於焦點狀態,或者在焦點聚焦後才被觸發一次。 – ZTefter 2012-03-23 19:27:39

+0

它會被觸發一次,同時爲了更新你必須使用定時器函數(setInterval)來觸發每個10secs,在這種情況下,onblur只需清除時間間隔id來停止更新。 – Abhidev 2012-03-23 19:36:33

0

雖然我用這個Detecting focus of a browser window和我在這裏分享給大家誰需要這個沒有jQuery的,我會接受上面的答案,因爲它似乎是一個優雅和清晰的解決方案,我的原始問題。