JavaScript ブックマークレットを使用して、選択したテキスト ブロック内のすべての IP アドレスを見つけるにはどうすればよいでしょうか?

StackOverflow https://stackoverflow.com/questions/72921

質問

私は JavaScript を学び始めたばかりなので、些細な問題だと思われるものを理解するスキルがありません。

私はコミュニティの FAQ として機能する Wordpress ブログに取り組んでおり、コメントの管理を容易にするいくつかのツールをまとめようとしています。 Internet Duct Tape の Greasemonkey ツール (Comment Ninja など), 、ほとんどの場合役に立ちますが、傾向などを追跡するために、コメントを取得しているすべての IP アドレスのリストを取得できるようにしたいと考えています。

コメントページで大量のテキストを選択してブックマークレットをクリックできるようにしたいだけです(http://bookmarklets.com) Firefox では、選択範囲内で見つかったすべての IP アドレスをリストするウィンドウがポップアップ表示されます。

アップデート:

私はからの答えを組み合わせたようなものです レヴィク そして ジェイコブ これを思いつくには:

javascript:ipAddresses=document.getSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g).join("<br>");newWindow=window.open('', 'IP Addresses in Selection', 'innerWidth=200,innerHeight=300,scrollbars');newWindow.document.write(ipAddresses)

違いは、 警告 levik の回答のように、メッセージを受信すると、Jacob の回答と同様の新しいウィンドウが開きます。の 警告 にはスクロール バーがありません。これは、多くの IP アドレスを持つページで問題となる可能性があります。ただし、Jacob のソリューションとは異なり、リストを垂直にする必要があったので、levik のヒントを使用して、
levik の代わりに参加するため .

皆さん、助けてくれてありがとう。

役に立ちましたか?

解決

Firefox では、次のようなことができます。

javascript:alert(
  document.getSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g)
  .join("\n"))

これがどのように機能するか:

  • ブラウザから選択テキストを取得します (FF では「document.getSelection()」、IE では「document.selection.createRange().text」になります)。
  • 正規表現を適用して IP アドレスをマーチします (Muerr の提案に従って)。これにより、文字列の配列が生成されます。
  • この配列をリターン文字で区切られた 1 つの文字列に結合します
  • その文字列をアラートします

IE では選択内容を取得する方法が少し異なりますが、原則は同じです。クロスブラウザーにするには、どの方法が利用できるかを確認する必要があります。より複雑な出力を行うこともできます (フローティング DIV を作成し、そこにすべての IP を挿入するなど)。

他のヒント

正規表現を使用して IP アドレスを検出します。いくつかの例:

/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/
/^([1-9][0-9]{0,2})+\.([1-9][0-9]{0,2})+\.([1-9][0-9]{0,2})+\.([1-9][0-9]{0,2})+$/

ブックマークレットとして

javascript:document.write(document.getSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g))

新しいブックマークを作成し、その JavaScript を貼り付けるだけです

ユビキティでそれを行う方法

CmdUtils.CreateCommand({
    name: "findip",
    preview: function( pblock ) {
        var msg = 'IP Addresses Found<br/><br/> ';
        ips = CmdUtils.getHtmlSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g);
        if(ips){
            msg += ips.join("<br/>\n");
        }else{
            msg += 'None';
        }
        pblock.innerHTML = msg;
    },

    execute: function() {
        ips = CmdUtils.getHtmlSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g);
        if(ips){
            CmdUtils.setSelection(ips.join("<br/>\n"));
        }
    }
})

ここ は、訪問者の IP アドレスの取得に関する優れた記事です。必要に応じてコメントに加えてこれを表示したり、後で参照できるようにページのラベルまたはフィールドとして含めたりすることもできます。

を見てください。 rot13 ブックマークレット ブックマークレットをクリックしたときにテキストを選択し、アクション (この場合は置換) を実行する例を示します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top