如何使用 JavaScript 书签找到选定文本块中的所有 IP 地址?
-
09-06-2019 - |
题
我刚刚开始学习 javascript,所以我没有能力弄清楚我认为是一个小问题。
我正在与一个 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)
区别在于,而不是 警报 消息,正如莱维克的回答一样,我打开一个与雅各布的回答类似的新窗口。这 警报 不提供滚动条,这对于具有许多 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 的建议)——这会产生一个字符串数组。
- 将此数组连接成一个由返回字符分隔的字符串
- 提醒该字符串
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 粘贴到
如何在 Ubiquity 中做到这一点
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 书签 单击小书签时选择文本并执行操作(在本例中为替换)的示例。
不隶属于 StackOverflow