1

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

<a href="#" onclick="navigate(___VIEW_RAID_2, {raid_inst_id:556816});return false;">

raid_inst_id: 后面的数字总是不同的,同一页面上会有多个数字不同的数字。我正在尝试组合一个 javascript 来抓取这些链接的页面,将它们放在一个数组中,然后循环单击它们。

理想情况下,导致点击之间暂停的警报会很有帮助。到目前为止,我什至试图收集这些数字并只是将它们呼应出来,更不用说操纵它们了,但我一直没有成功。

任何提示或帮助将不胜感激!

下面是我尝试组合的一个函数,只是为了看看我是否可以捕获一些 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 个月后,同样的问题仍然存在。我决定再次调查这个问题,只是为了在我的谷歌搜索中找到我自己发布的问题!有人对这里可以做什么有任何想法吗?我试图提供的功能将是我已经提供给用户的 Chrome 扩展程序的一部分。它结合了我在网络服务器上托管的 .js 文件和注入的 html 内容。

任何帮助,将不胜感激!

4

1 回答 1

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());
    }
}
于 2012-12-26T15:35:31.990 回答