[英]javascript autoclick loop not resetting when clicked again
我为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)
});
}());
我的猜测是链接本身正在重新生成,这意味着当你检查它的长度时它可能会丢失。
也许尝试使用on
而不是click
方法。 这样,您可以指定整个文档并使用您的选择器来过滤后代。
$('document').on('click', '.more_notes_link', function() {
// your code
}
我终于解决了这个问题!
$('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)
}
});
首先,它在点击一次后丢失了正确的类,因此我不得不将其作为身体的一个孩子进行搜索。
然后问题是它点击了自己并同时启动了数百个循环。 我解决了这个问题,只是在循环没有运行时才允许它循环点击。
我希望这有助于其他人解决同样的问题,因为这个问题很难解决。
如果有人想使用它,它会发布在这里!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.