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