如何使用javascript小书签找到选定文本块中的所有IP地址?
时间:2020-03-05 18:56:06 来源:igfitidea点击:
我才刚刚开始学习JavaScript,所以我没有技巧来弄清楚我认为是一个小问题。
我正在与一个Wordpress博客一起工作,该博客作为我们社区的常见问题解答,并且我正在尝试汇总一些工具以简化评论的管理。 Internet Duct Tape的Greasemonkey工具(例如Comment Ninja)对其中的大多数功能很有帮助,但是我希望能够获得我们从中获取评论的所有IP地址的列表,以便跟踪趋势等。
我只希望能够在评论页面上选择一堆文本,然后在Firefox中单击一个书签(http://bookmarklets.com),这会弹出一个窗口,列出所有在选择中找到的IP地址。
更新:
我将levik和Jacob的答案结合起来得出以下结论:
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)
区别在于,我打开了一个类似于Jacob答案的新窗口,而不是像levik的答案那样发出警报消息。警报不提供滚动条,这对于具有许多IP地址的页面可能是个问题。但是,与Jacob的解决方案不同,我需要列表是垂直的,因此我使用了levik的提示来创建一个列表。
加入而不是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插入其中)。
回答
作为书签
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")); } } })
回答
请查看rot13小书签,以了解单击小书签时选择文本并执行操作(在本例中为替换)的示例。