2015-12-08 71 views
4

當您最小化窗口或交換選項卡時,JavaScript的setInterval()方法開始變得難以置信地不可靠。JavaScript setInterval()和最小化窗口

我剛剛完成了我正在處理的應用程序上的時間跟蹤功能,該應用程序由setInterval驅動。這一切都奏效了,直到我開始最小化窗口並在稍後再回來時,才發現時間已經增加了窗口在屏幕上的時間的一小部分。

這似乎是瀏覽器級別的「功能」。

有沒有一個簡單的選擇,我可以交換出來的時間單位是否真正被尊重?

+0

當窗口最小化時,Javascript會繼續在後臺運行。它甚至可以操縱DOM。這可能是您的代碼的問題。我們可以看到它嗎? – magreenberg

+0

如果我選擇的重複無法解決您的問題,請針對您的問題的不同情況進行更具體的評論,然後我可以重新打開您的問題。如果它*解決了你的問題,快樂編碼! – apsillers

+0

@magreenberg現在的問題是,當頁面不可見時,現代瀏覽器限制'setInterval'每秒至多運行一次(左右)。 – apsillers

回答

2

這似乎是一些瀏覽器中的一項功能,例如在Chrome中,處於非活動狀態/在後臺的選項卡允許超過1000毫秒。 你可以閱讀關於它here

通常的解決方案是使用Web Workers,因爲他們不會受到這個問題的影響。事實上,這裏已經顯示了一些這樣的解決方案before