2010-02-19 5 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 (при загрузке) в GM_JQ, поэтому вы можете избежать использования GM_wait() – w35l3y

ответ

0

Есть проблемы с тем, как вы оцениваете правильность загрузки jQuery, я предлагаю вам Google для лучшего способа встраивания jQuery через GreaseMonkey (у меня есть некоторые скрипты, которые делают это, но не на этой машине).

Однако, чтобы делать то, что вы пытаетесь, вам действительно не нужен jQuery; просто:

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

timer(); 

работает просто отлично :)

(Обратите внимание, я изменил уведомление на console.log, который отправляет вывод Firebug консоли, предупреждение может вызвать боль!)

+0

Пожалуйста, используйте '' 'setInterval()' '' для выше функциональности :) – user1931751

+0

Вы правы, 'setInterval()', вероятно, будет лучше, возьмите это 7 лет назад меня – Steve