2011-06-01 41 views
1

當沒有任何原因停止所有超時和間隔時,是否有人遇到問題?JS間隔和超時在webkit中意外停止

它似乎發生在WebKit瀏覽器中,包括QtWebKit自定義應用程序。特別是當最小化,但不是每次。

我從來沒有在我的電腦上看到過這個問題,但有幾位客戶報告指向它的症狀,而在日誌中我發現他們的客戶端停止了ping服務器。

該項目使用ExtJS,Google Maps和其他一些開源庫。

+0

這些是您自己的超時時間和間隔時間,還是在包含的庫中使用?我問,因爲另一個用戶有問題的jQuery動畫疊加動畫當一個選項卡失去焦點,然後在頁面重新獲得焦點時快速連續執行它們(http://stackoverflow.com/questions/6112671/settimeout-speeds-up -with-multiple-tabs) – Matt 2011-06-01 21:09:14

+0

是的,這些是我自己的間隔。他們停止很少和不可預測。此外,我試圖重載clearInterval/clearTimeout funcs,以防止圖書館停止我的時間間隔。但它也沒有幫助。 – 2011-06-01 21:19:08

回答

1

Chrome/webkit將選項卡移至背景時暫停超時/間隔。這可能是問題(您的客戶可能已經切換了標籤,而您的間隔/超時正在運行)。檢查my SO-question瞭解更多信息,或見suspension in action

+0

謝謝。這個很重要。但減速並不是問題:我有15秒的服務器端超時和5秒的ping時間間隔。在日誌中,我已經看到以下內容:一系列ping,然後是20分鐘的沉默,然後是由用戶發起的新請求。問題是在這20分鐘內間隔請求的地方? – 2011-06-01 21:37:59

+0

好吧,這是不同的。我不認爲答案很簡單。它仍然可能是一個瀏覽器問題,或者是服務器上的問題(儘管5秒鐘ping等,但是在15秒之後觸發超時)。我想你必須在你的腳本中添加一些檢查和平衡來跟蹤發生的事情。 – KooiInc 2011-06-01 22:24:54

0

我知道你說這主要是當瀏覽器最小化,但頁面響應,在所有的,如果你看到一個主動/可見頁面上的這種行爲?如果頁面沒有響應,對用戶交互反應慢等,可能是其他JavaScript函數(超時/間隔除外)正在吸收線程。由於JS是單線程的(有一些HTML5異常),所以它可以阻止其他JS運行。

+0

當頁面可見時,該頁面有響應。 – 2011-06-01 22:05:39