2011-10-12 112 views
1

我有圖像滑塊,其中圖像通過超時相互取代。我使用jQuery函數的setInterval(),但有一個小問題,最大限度地減少瀏覽器窗口這一功能繼續「工作」後,並在我恢復的瀏覽器窗口的圖像相互取代與incrediable高速等之後窗口被最小化的setInterval(整個時間)收集操作,但在恢復窗口後執行它們。Jquery的setInterval的上最小化

如何暫停的setInterval()在瀏覽器最小化或保留交換圖像窗口最小化時?

+0

參見http://stackoverflow.com/questions/1060008/is-there-a-way-to-detect-if-a-browser -window - 是 - 不當前活動只是暫停時不集中,並恢復焦點:) –

回答

4

animate()的文件明確提到:

由於requestAnimationFrame()性質的,你應該使用setIntervalsetTimeout循環永遠不會 隊列動畫。爲了 保護CPU資源,支持在沒有顯示的窗口/標籤​​ 不會更新動畫的瀏覽器。如果 繼續通過setIntervalsetTimeout排隊動畫,而 動畫暫停,則當窗口/選項卡重新獲得焦點時,所有排隊的動畫將開始播放 。爲了避免這種潛在的問題, 用完最後一次動畫的回調中循環,或追加 功能的元素.queue(),設置超時時間,開始下一個 動畫。

所以,你可以在兩個電話間撥打您的動畫鏈中的下一個週期的回調setTimeout(),如果可能的話,還是queue()來電來setTimeout()animate()

編輯:正如意見中的要求,這裏是一個簡單的例子queue()。下面的代碼強制執行幻燈片動畫之間的兩秒延遲:

$("selector").slideUp("slow").queue(function(next) { 
    window.setTimeout(next, 2000); 
}).slideDown("slow"); 
+0

我不使用'動畫()',我只是隻添加和刪除類「主動」和淡入,淡出圖片。那麼我應該如何解決這個問題呢? – Yekver

+0

@Yekver,我將不得不看看你的動畫鏈何時以及如何循環以改善我的答案。你能用相關的代碼更新你的問題嗎? –