2012-05-11 102 views
4

我發現了很多類似的問題,但沒有一個是相同的,也沒有正確的解決方案。這是一個很奇怪的問題。setTimeout並不總是在Greasemonkey中工作

我有一個簡單的Greasemonkey腳本測試問題:

// ==UserScript== 
// @name  testdiddio 
// @namespace http://userscripts.org/users/useridnumber 
// @include  https://www.google.it/ 
// @version  1 
// ==/UserScript== 


function wait(){ 
    console.info("wait"); 
    setTimeout(wait,1000); 
} 

console.info("start"); 
wait(); 

這是螢火蟲的輸出:

start 
wait 
wait 
wait 
wait 

的等待()函數被調用4次,然後停止。如果我將超時設置爲100ms,則通話似乎至少可以工作10/15秒,然後停止。

我使用的是: 火狐12.0 的Greasemonkey 0.9.19

+0

也許是因爲Greasemonkey腳本在網頁完全加載時停止運行? – JoP

回答

6

這是Greasemonkey的0.9.19的錯誤。
添加了一項功能,允許setTimeout()即使在頁面的JS被禁用並且引入了一些複雜性(問題1549,15521553等)時也可以工作。

它應該立即在版本0.9.20中解決,或恢復到版本0.9.18。

+0

謝謝我剛剛安裝了0.9.18版本,一切都很好。你拯救了我的一天。 – JoP

+0

不客氣;樂意效勞。 –

+0

這似乎也發生在我的0.9.20,以便讓你知道 - 恢復到0.9.18,似乎已經解決了這個問題。如果有任何問題,我會很樂意嘗試一些測試(例如,如果0.9.20實際上已經被SUPPOSED解決了問題)。 –