Dom Google Chrome扩展:获取页面中的所有链接
我正在尝试制作chrome扩展,它可以递归地在网站上搜索常见的错误消息字符串(如“error 500”等),用于web开发人员测试 第一步是从活动选项卡获取所有链接。因此,在扩展的背景脚本中,我有以下代码片段:Dom Google Chrome扩展:获取页面中的所有链接,dom,google-chrome-extension,Dom,Google Chrome Extension,我正在尝试制作chrome扩展,它可以递归地在网站上搜索常见的错误消息字符串(如“error 500”等),用于web开发人员测试 第一步是从活动选项卡获取所有链接。因此,在扩展的背景脚本中,我有以下代码片段: var $html = jQuery(html); var links = []; $html.find('a').each(function(){ console.log(this); console.log(this.href); //links
var $html = jQuery(html);
var links = [];
$html.find('a').each(function(){
console.log(this);
console.log(this.href);
//links.push(this.href);
});
但是这个脚本的输出对于相对链接来说很奇怪:
<a href="/" id="logo"></a>
chrome-extension://kmldadmcjflefibfflbkpmgjdpklghfa/
<a href="#top">About</a>
chrome-extension://kmldadmcjflefibfflbkpmgjdpklghfa/background.html#top
<a href="/articles/applications/1">Web applications</a>
chrome-extension://kmldadmcjflefibfflbkpmgjdpklghfa/articles/applications/1
铬-extension://kmldadmcjflefibfflbkpmgjdpklghfa/
铬-extension://kmldadmcjflefibfflbkpmgjdpklghfa/background.html#top
铬-extension://kmldadmcjflefibfflbkpmgjdpklghfa/articles/applications/1
虽然元素的href
属性的值为“/”,但转储的this.href
输出“chrome”-extension://kmldadmcjflefibfflbkpmgjdpklghfa/'.
如果没有“chrome”,我如何获得链接的href值-extension://blahblahblah/' ? 您正在解析自己的扩展背景页。这真的是你想做的吗 如果您打算解析另一个页面,请使用“内容脚本”。 这里有大量的文档记录: 在评论后编辑: 所以你只想摆脱“铬”-extension://...“
或者更好的是,只需从您的“this”获取名称和URL即可。不,
html
实际上是从活动选项卡获取的。它是字符串,包含来自活动标记的HTML源代码。我确信这一点。上面的代码只是我脚本的一部分。好的,你的代码将返回'background.html#top',但我想得到'top'。因此,我也可以手动剪切'background.html'文本,但我认为这不是一种干净的方式。请使用$(this.attr('href')
或this.getAttribute('href')
而不是this.href
,阅读属性,而不是解析的href
。Rob W:非常感谢!我不知道为什么$(this.attr('href')
有效,而this.href
无效,但它解决了我的问题:-),因为this.href
是一个返回解析URL的属性,.attr
或.getAttribute
返回元素上设置的属性。
var str = 'chrome-extension://kmldadmcjflefibfflbkpmgjdpklghfa/background.html#top';
var out = str.replace('chrome-extension://kmldadmcjflefibfflbkpmgjdpklghfa', '');