2012-05-11 72 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解决了问题)。 –