2010-02-19 73 views
1

我玩弄jquery和greasemonkey,并试图使用setTimeout每秒调用一个函数,但由于某种原因它不起作用。greasemonkey,jquery和setTimeout

// Add jQuery 
var GM_JQ = document.createElement('script'); 
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js'; 
GM_JQ.type = 'text/javascript'; 
document.getElementsByTagName('head')[0].appendChild(GM_JQ); 

// Check if jQuery's loaded 
function GM_wait() { 
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); } 
else { $ = unsafeWindow.jQuery; letsJQuery(); } 
} 
GM_wait(); 

// All your GM code must be inside this function 
function letsJQuery() { 

功能定时器(){ 警报( 'TEST') }

的setTimeout(定时器,1000);

} 

有什么想法吗?

+0

最新版本的jQuery犯规的在Greasemonkey工作。在GM中工作的更高版本是1.3.2,并且我建议你添加一个eventlistener(on load)到GM_JQ,所以你可以避免使用GM_wait() – w35l3y 2010-08-08 19:10:09

回答

0

如果您正在评估jQuery的正确加载方式有问题,我建议您通过GreaseMonkey嵌入jQuery(我确实有一些脚本在某处做这个但不是在这台机器上)的Google。

但是,要做你想要的东西,你实际上并不需要任何jQuery;简单地说:

function timer() { 
    console.log('TEST') 
    setTimeout(timer, 1000); 
} 

timer(); 

工作得很好:)

(请注意,我改变警觉CONSOLE.LOG,它发送输出到Firebug的控制台,警报会引起疼痛!)

+0

请使用'''setInterval()'''for以上功能:) – user1931751 2016-11-16 12:16:37

+0

你说得对,'setInterval()'可能会更好,拿7年前我 – Steve 2016-11-19 10:15:43