试图触发一堆包含不同数字的onclicks

时间:2012-08-21 17:29:39

标签: javascript onclick

我可以访问的页面包含一堆这样的链接:

<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);
        }
}

哇 - 4个月后,同样的问题仍然存在。我决定再次调查此问题,只是为了在我的Google搜索中找到自己发布的问题!有没有人对这里可以做些什么有任何想法?我正在尝试提供的功能将成为我已经提供给用户的Chrome扩展程序的一部分。它使用我在我的网络服务器上托管的.js文件和注入的html内容的组合。

任何帮助将不胜感激!

1 个答案:

答案 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());
    }
}