我正在尝试在网站上模拟点击各种链接,然后使用它们来展开各个部分。开发人员不打算包括“全部展开”,并且至少有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提供该解决方案。
答案 0 :(得分:0)
使用以下jQuery代码
jQuery.each( level_one, function( i, val ) {
$( "#" + val ).click();
});
答案 1 :(得分:0)
尝试使用jQuery
for (var i = 0; i < level_one.length; i++) {
$("#"+level_one[i]).trigger("click");
}
答案 2 :(得分:0)
使用jQuery:
$(level_one.map(function(e){return '#'+e}).join(',')).each(function(e,index){
setTimeout(function(){$(e).trigger('click')},index*1000)
});
a#a_link_1
将立即触发(0 timout)a#a_link_2
将在1秒钟后触发(1000毫秒提示)a#a_link_3
将在2秒(2000毫秒时间)后触发.....
a##a_link_n
将在(n-1)秒后触发level_one.map(function(e){return '#'+e}).join(',')
相当于:'#a_link_1,#a_link_2,#a_link_3'