Javascript click() 函数同时单击所有按钮

Javascript click() function clicking all the buttons at the same time

提问人:Selim 提问时间:11/9/2023 更新时间:11/10/2023 访问量:50

问:

我想单击网站上的所有按钮,但我的代码尝试同时单击所有 2000 个按钮,因此 chrome 失败。我怎样才能让它一个接一个地点击所有按钮,这样它就不会强迫计算机和 chrome?我想计算元素的索引并有一个for循环,但我想知道有没有其他方法或基本代码



const divs =
document.querySelectorAll('.wbloks_1');

divs.forEach(div => {

  div.click();

});

Chrome 因过载而失败

JavaScript 函数 单击 ClickOnce

评论

0赞 Elvis Adomnica 11/9/2023
它们是 div 还是按钮?在任何情况下,您只需要使用 添加延迟。看看它的文档,你应该很高兴setTimeout
0赞 Selim 11/9/2023
它们实际上是 div,但 div 主体就像一个按钮,我会尝试 setTimeout,感谢您的回答:)
0赞 Yosef Tukachinsky 11/10/2023
@ElvisAdomnica我认为这里更有意义,因为它将确保当前的代码队列已经结束,换句话说,一旦页面准备好操作,它就不会再等待了requestAnimationFrame
0赞 Elvis Adomnica 11/10/2023
不确定我是否理解你的意思it will make sure current code queue is over

答:

-1赞 call me Gi 11/9/2023 #1

您可以对任务使用递归

clickButton = (index) => {
  while(index < 2000) {
  document.querySelector('.wbloks' + [index]).click();
  clickButton(index + 1);
 }
 return;
}


----------


评论

0赞 Quentin 11/10/2023
这使得代码更加复杂,有遇到过多递归的风险,并且与原始代码存在相同的问题
0赞 Elvis Adomnica 11/10/2023 #2

如果您还没有弄清楚这一点,正如我在评论中提到的,您可以使用它。setTimeout

const divs = document.querySelectorAll('.wbloks_1');
const ms = 10; // whatever delay value you want

divs.forEach((div, index) => {
  setTimeout(() => { div.click(); }, index * ms);
});