Greasemonkey setTimeout 和 setInterval 未触发

发布于 2025-01-05 02:08:28 字数 528 浏览 2 评论 0原文

我正在使用以下代码,我收到的唯一警报是 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 具有正常值,只是函数从未运行。

I am using the following code, The only alert I get is the alert(t). I have tried unsafeWindow.setTimeout, window.setTimeout, and other variations including setInterval - nothing is working.

$('#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);
            }
    }

Edit: No errors, either. The script continues to execute and t has a normal value, just the function never runs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花开雨落又逢春i 2025-01-12 02:08:28

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

您使用的是哪个版本的 FF 和 Greasemonkey?某些组合在计时器和/或事件侦听器内的警报方面存在问题。

不管怎样, $('#time').val () 可能不存在或者不是你想象的那样。 $('#time') 是否引用

试试这个代码:

// 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);
    }
}

Don't write code like that! Learn to love jsBeautifier and JSLint.

What version of FF and Greasemonkey are you using? Some combos had problems with alerts inside timers and/or event listeners.

Anyway, $('#time').val () is probably not present or not what you think it is. Does $('#time') refer to an <input>?

Try this code:

// 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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文