【发布时间】:2015-03-02 04:15:21
【问题描述】:
我正在尝试在一个网站中模拟点击各种链接,并使用它们来扩展部分。开发人员没有费心添加“全部展开”,并且至少有 200 个按钮我不想点击,所以我想我会使用 JavaScript。但是欢迎任何其他想法。
我试图模拟点击的链接定义为:
<a id='a_link_1' href=...> ... </a>
<a id='a_link_2' href=...> ... </a>
<a id='a_link_3' href=...> ... </a>
我认为在 Google Chrome 的开发者控制台上使用类似的东西会起作用:
var level_one = [
'a_link_1',
'a_link_2',
'a_link_3'
];
for (var i = 0; i < level_one.length; i++) {
document.getElementById(level_one[i]).click();
}
问题在于它只适用于第一个链接。如果我更改链接的顺序,它仍然只适用于第一个。实际上,我尝试设置一个计时器来稍微思考一下可以解决问题,但事实并非如此。
为什么它没有激活所有链接?正确的方法是什么?谢谢!
如果你想测试一下,网站是:http://www3.inegi.org.mx/sistemas/saic/(它是西班牙语)。
编辑: @chiliNUT 的答案对我来说是最有用的,所以我把它放在这里,因为我不能将它标记为接受的答案,因为它没有作为一个提交。
总结一下,
clickables = document.querySelectorAll('a[href^="javascript:"]');
for (i in clickables) { clickables[i].click(); }
将检索具有以“javascript”开头的链接关联的所有对象(用于触发扩展链接)。 for loop 实际上是一个一个地模拟对它们的点击(小心!您最终可能会模拟对您不想要的东西的点击)。
就是这样。感谢@chiliNUT 提供该解决方案。
【问题讨论】:
-
我无法复制这个,更不用说那个页面上没有名为“a_link_1”、“a_link_2”、“a_link_3”的链接,所以我无法重现这个问题,所以我可以没有更多信息就帮不了你:)
-
运行这段代码以尝试触发每个单击事件都可以正常工作,因此我需要有关您尝试激活的特定链接的更多信息:
clickables=document.querySelectorAll('a[href^="javascript:"]'); for (i in clickables) { clickables[i].click(); } -
提供的页面不包含这些链接
-
浏览器/javascript引擎是否会因为单击锚标记(第一个)而导致脚本结束?我不确定是否可以将其发布为答案,只是可能?
-
以下链接可能对您的问题有所帮助。 *.com/questions/11135932/…
标签: javascript html for-loop