Greasemonkey setTimeout和setInterval不触发

时间:2012-02-12 03:14:18

标签: javascript jquery greasemonkey settimeout

我使用以下代码,我得到的唯一提醒是alert(t)。我尝试了unsafeWindow.setTimeoutwindow.setTimeout以及其他变体,包括setInterval - 没有任何效果。

$('#on').change(function () { t = setTimeout(function () { starttimer() },1000);timer_on = true;alert(t);  });
    function starttimer() { 
    alert('triggered');
        if (timer_on) {
            alert('timerstarted');
            t = setTimeout(function () { startimer() },1000);
            }
    }

编辑:没有错误。脚本继续执行,t具有正常值,只是函数永远不会运行。

1 个答案:

答案 0 :(得分:2)

不要写那样的代码!学会爱jsBeautifierJSLint

您使用的是什么版本的FF和Greasemonkey?一些组合在定时器和/或事件监听器内有警报问题。

无论如何,$('#time').val ()可能不存在或不符合您的想法。 $('#time')是否引用<input>

试试这段代码:

// t and timer_on are global variables.

$('#on').change ( function () {
    var timeVal = $('#time').val ()  ||  1; //-- Account for empty and NaN
    timeVal     = parseInt (timeVal, 10) * 1000;

    alert ('Time val = ' + timeVal);
    t           = setTimeout (starttimer, timeVal);
    timer_on    = true;
    alert (t);
} );

function starttimer () {
    alert ('triggered');
    if (timer_on) {
        alert ('timerstarted');
        var timeVal = $('#time').val ()  ||  1; 
        timeVal     = parseInt (timeVal, 10) * 1000;

        alert ('Time val = ' + timeVal);
        t           = setTimeout (starttimer, timeVal);
    }
}