如何使用javascript bookmarklet在选定的文本块中找到所有IP地址?

如何使用javascript bookmarklet在选定的文本块中找到所有IP地址?,javascript,ip-address,bookmarklet,Javascript,Ip Address,Bookmarklet,我刚刚开始学习javascript,所以我没有技能去弄清楚我认为什么是一个微不足道的问题 我正在与一个Wordpress博客合作,该博客是我们社区的常见问题解答,我正在尝试整合一些工具,使评论管理变得更容易,对大部分内容都很有帮助,但我希望能够获得所有IP地址的列表,以便跟踪趋势等等 我只想能够在评论页面上选择一组文本,然后在Firefox中单击bookmarklet(),它会弹出一个窗口,列出在选择中找到的所有IP地址 更新: 我结合了来自和的答案得出了以下结论: javascript:ipA

我刚刚开始学习javascript,所以我没有技能去弄清楚我认为什么是一个微不足道的问题

我正在与一个Wordpress博客合作,该博客是我们社区的常见问题解答,我正在尝试整合一些工具,使评论管理变得更容易,对大部分内容都很有帮助,但我希望能够获得所有IP地址的列表,以便跟踪趋势等等

我只想能够在评论页面上选择一组文本,然后在Firefox中单击bookmarklet(),它会弹出一个窗口,列出在选择中找到的所有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)
javascript:ipAddresses=document.getSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g);newWindow=window.open(“”,'选择中的IP地址','innerWidth=200,innerHeight=300,滚动条');newWindow.document.write(IP地址)
不同之处在于,我打开了一个类似于雅各布回答的新窗口,而不是像莱维克的回答那样发出警告信息。此警报不提供滚动条,这可能是具有多个IP地址的页面的问题。但是,与Jacob的解决方案不同,我需要列表是垂直的,因此我使用levik的提示为join而不是levik的\n创建一个


谢谢大家的帮助。

是一篇关于获取访问者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})+$/

在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所建议的)-这将产生一个字符串数组
  • 将此数组合并为一个由返回字符分隔的字符串
  • 警告该字符串
在IE上获得选择的方式有点不同,但原理是一样的。要使其成为跨浏览器的,您需要检查哪种方法可用。您还可以执行更复杂的输出(例如创建一个浮动DIV并将所有IP插入其中)。

作为bookmarklet 只需创建一个新书签并将该javascript粘贴到

如何做到无处不在
CmdUtils.CreateCommand({
名称:“findip”,
预览:函数(pblock){
var msg='找到的IP地址

'; ips=CmdUtils.getHtmlSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g); 如果(ips){ msg+=ips.join(“
\n”); }否则{ msg+=“无”; } pblock.innerHTML=msg; }, 执行:函数(){ ips=CmdUtils.getHtmlSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g); 如果(ips){ CmdUtils.setSelection(ips.join(“
\n”); } } })
请看一看,在单击bookmarklet时选择文本并执行操作(在本例中为替换)的示例。

这两个都是Jacob的答案,但这一个更像我需要的,它弹出了可以复制IP的警报窗口。又好又短。谢谢
javascript:document.write(document.getSelection().match(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g))
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"));
        }
    }
})