微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Greasemonkey延迟…setTimeout不能正常运行

如何解决Greasemonkey延迟…setTimeout不能正常运行

|| 我一直在玩一个站点,在该站点中,我想继续在每ѭ1秒内单击一次按钮ѭ0次。 我的代码是:
clickbidBtn1 = function() {
    var bidBtn=document.getElementById(\"BidButton\");

    var interval = 15000;
    for (var i=3; i>=0; i--){
    setTimeout(bidBtn.click(1);,i*interval);
};
我发现GM同时执行所有“ 0”次点击,而不是故意延迟。有没有办法延迟点击时间?假设我希望该功能每15秒单击一次按钮0次。 我当时想给它更多的变量,并在
settimeout
代码部分中添加一个变量,该部分仅在单击时执行,然后将增加的变量与当前变量进行比较,然后再转到下一个
settimeout
...但没有想到通过...似乎是一个简单过程的复杂过程... :(我会玩一点     

解决方法

为此使用ѭ7。 单程:
var bidClickTimer       = 0;
var numBidClicks        = 0;

function clickbidBtn1 ()
{
    var interval        = 15000;
    bidClickTimer       = setInterval (function() {BidClick (); },interval);
}

function BidClick ()
{
    numBidClicks++;
    if (numBidClicks > 3)
    {
        clearInterval (bidClickTimer);
        bidClickTimer   = \"\";
    }
    else
    {
        bidBtn.click (1);
    }
}

clickbidBtn1 ();
或者,不使用全局变量:
function clickbidBtn1 ()
{
    var interval            = 15000;
    this.numBidClicks       = 0;
    this.bidClickTimer      = 0;
    this.BidClick           = function () {
                                numBidClicks++;
                                if (numBidClicks > 3)
                                {
                                    clearInterval (bidClickTimer);
                                    bidClickTimer   = \"\";
                                }
                                else
                                {
                                    bidBtn.click (1);
                                }
                            };
    this.bidClickTimer      = setInterval (function(thisScope) {thisScope.BidClick (); },interval,this);
}

clickbidBtn1 ();
    ,只是为了说明您的代码为什么不起作用:您正在立即调用
.click
方法(在函数名称调用该函数之后输入
()
),并且实际上将该函数的返回值传递给
setTimeout
for
循环是如此之快,以至于所有事情似乎都是同时发生的。 您必须将函数引用传递给
setTimeout
,例如匿名函数:
setTimeout(function() {
    bidBtn.click(1);
},i*interval);
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。