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か月後、同じ問題がまだ存在しています。Google検索で自分の投稿された質問を見つけるためだけに、これをもう一度調べることにしました! ここで何ができるかについて考えている人はいますか?私が提供しようとしている機能は、既にユーザーに提供している Chrome 拡張機能の一部になります。Web サーバーでホストしている .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 に答える