我为 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 仍然存在,它也根本没有注意到我点击它。
最佳答案
因为 loadNotesInterval
是一个局部变量,所以每次点击都会得到一个新的。
因此,如果您在点击之外定义它并放下 var,它将按照您想要的方式工作。
(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)
});
}());
关于再次单击时javascript autoclick循环不会重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35050453/