再次单击时,javascript自动循环不重置

时间:2016-01-27 23:51:37

标签: javascript jquery

我为Tampermonkey制作了一个小脚本,帮助我浏览tumblr笔记,没有任何不必要的点击或查看"用户喜欢这个"垃圾邮件。

$('.more_notes_link').click(function() {
    var LoopCount = 10;
    var i = 0;
    clearInterval(loadNotesInterval);
    var loadNotesInterval = setInterval(function() {
        if ($('.more_notes_link').length ) {
            $('.more_notes_link').click();
            i++;
            console.log(i);
            if (i >= LoopCount) {
                clearInterval(loadNotesInterval);
            }
        }
        else
        {
            clearInterval(loadNotesInterval);
        }
    }, 1000)
});

GM_addStyle ( ".notes .note.without_commentary{display:none} .notes .note.reply{display:inline}" );

出于某种原因,它只是在运行一次时完美运行,记录数字从1到10,然后停止......然后它就不再起作用了。没有控制台输出,没有循环,只点击一次。

我已经多次尝试并放弃了,所以我想我最后只是问这里有人能解决我的问题。我自己无法弄清楚。

编辑:我尝试在整个地方放置一些console.logs,似乎脚本在第一个之后根本没有检测到我的点击。所以出于某种原因,即使.more_notes_link仍然存在,它根本没有注意到我点击它。

3 个答案:

答案 0 :(得分:1)

因为public void getAllContactsAccounts(Context context){ AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE); Account[] accounts = accountManager.getAccounts(); System.out.println("PrintingAccounts: " + accounts.length); for(Account a : accounts){ System.err.println("AccountName: " + a.name); } } 是一个局部变量,所以每次点击都会得到一个新变量。

因此,如果您在点击之外定义并删除var,它将按您希望的方式工作。

loadNotesInterval

答案 1 :(得分:1)

我的猜测是链接本身正在重新生成,这意味着当你检查它的长度时它可能会丢失。

也许尝试使用(function () { var loadNotesInterval; $('.more_notes_link').click(function() { var LoopCount = 10; var i = 0; clearInterval(loadNotesInterval); loadNotesInterval = setInterval(function() { if ($('.more_notes_link').length ) { $('.more_notes_link').click(); i++; console.log(i); if (i >= LoopCount) { clearInterval(loadNotesInterval); } } else { clearInterval(loadNotesInterval); } }, 1000) }); }()); 代替on方法。这样您就可以指定整个文档并使用您的选择器来过滤后代。

click

答案 2 :(得分:1)

我终于解决了这个问题!

$('body').on('click', '.more_notes_link',function() {
    if (i == 0) {
        clearInterval(loadNotesInterval);
        var loadNotesInterval = setInterval(function() {
            if ($('.more_notes_link').length) {
                i++;
                $('.more_notes_link').click();
                if (i >= LoopCount) {
                    i = 0;
                    clearInterval(loadNotesInterval);
                }
            }
            else
            {
                i = 0;
                clearInterval(loadNotesInterval);
            }
        }, 1000)
    }
});

首先,它在点击一次后丢失了正确的类,因此我不得不将其作为身体的一个孩子进行搜索。

然后问题是它点击了自己并同时启动了数百个循环。我解决了这个问题,只是当循环没有运行时才允许它循环点击。

我希望这有助于其他人解决同样的问题,因为这个问题很难解决。

如果有人想要使用它,请将其发布在HERE!