我可以访问的页面包含一堆这样的链接:
<a href="#" onclick="navigate(___VIEW_RAID_2, {raid_inst_id:556816});return false;">
raid_inst_id之后的数字总是不同,并且同一页面上的数字都会有不同的数字。我正在尝试整理一个javascript,它将抓取这些链接的页面,将它们放入一个数组中,然后循环点击它们。
理想情况下,在onclicks之间导致暂停的警报会很有帮助。到目前为止,我一直没有成功,甚至试图收集数字,只是回应它们,更不用说操纵它们了。
非常感谢任何提示或帮助!
下面是我尝试组合的一个函数,只是为了看看我是否可以捕获一些onclick值以进行进一步处理,但这不会产生任何结果......
function closeraids(){
x=document.getElementsByTagName('a');
for(i=0;i<x.length;i++)
{
attnode=x.item(i).getAttributeNode('onclick');
alert("OnClick events are: " + attnode);
}
}
任何帮助将不胜感激!
答案 0 :(得分:0)
在制作这个jsfiddle时有一些乐趣:http://jsfiddle.net/Ralt/ttkGG/
主要是因为我开始使用几乎功能齐全的风格......但是很好。在你的问题上。
我正在使用getAttribute('onclick')
来获取字符串。它显示如下:
"navigate(___VIEW_RAID_2, {raid_inst_id:553516});return false;"
所以我建立了必要的正则表达式来匹配它,并在raid_inst_id
后捕获数字:
var re = /navigate\(___VIEW_RAID_2, {raid_inst_id:(\d+)}\);return false;/;
它主要通过转义括号并将(\d+)
放在要捕获数字的位置来重写字符串。 (\d+
匹配一个数字,()
正在捕获匹配的字符串。)
使用match()
,我可以简单地将捕获的字符串作为最后一个元素。所以,用旧的IE方式重写代码:
var links = document.getElementsByTagName('a'),
re = /navigate\(___VIEW_RAID_2, {raid_inst_id:(\d+)}\);return false;/;
for (var i = 0, l = links.length; i < l; i++) {
var attribute = links[i].getAttribute('onclick'),
nb;
if (nb = attribute.match(re)) {
alert(nb.pop());
}
}