JavaScript ブックマークレットを使用して、選択したテキスト ブロック内のすべての IP アドレスを見つけるにはどうすればよいでしょうか?
-
09-06-2019 - |
質問
私は 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 ブックマークレット ブックマークレットをクリックしたときにテキストを選択し、アクション (この場合は置換) を実行する例を示します。