Dom Google Chrome扩展:获取页面中的所有链接

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

我正在尝试制作chrome扩展,它可以递归地在网站上搜索常见的错误消息字符串(如“error 500”等),用于web开发人员测试

第一步是从活动选项卡获取所有链接。因此,在扩展的背景脚本中,我有以下代码片段:

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', '');