2

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

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

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

アップデート:

levikJacobからの回答を組み合わせて、これを考え出しました。

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 の\n
の代わりに、levik のヒントを使用して結合を作成しました。

みんな、助けてくれてありがとう。

4

5 に答える 5

4

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 をそれに挿入するなど)。

于 2008-09-16T15:40:12.663 に答える
1

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

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"));
        }
    }
})
于 2008-09-16T16:43:18.767 に答える
1

正規表現を使用して 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})+$/
于 2008-09-16T14:37:56.213 に答える
0

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

于 2008-09-16T16:44:28.420 に答える
0

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

于 2008-09-16T14:34:15.753 に答える