2013-03-30 69 views
0

我正在试图制作Chrome扩展程序,它可以递归地通过网站搜索常见的错误消息字符串(如“错误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 

虽然元素的href属性的值是“/”,甩this.href输出的chrome扩展名:// kmldadmcjflefibfflbkpmgjdpklghfa /'。

如何在没有'chrome-extension:// blahblahblah /'的情况下获得链接的href值?

+1

通过使用$(this).attr('href')'或'this.getAttribute('href')'而不是'this.href'来读取属性而不是解析的'href'。 –

+0

Rob W:非常感谢!我不知道为什么'$(this).attr('href')'工作并且'this.href'没有,但它解决了我的问题:-) – nanuqcz

+1

因为'this.href'是一个属性,它返回解析后的URL,'.attr'或'.getAttribute'返回元素上设置的属性。 –

回答

1

你正在解析你自己的扩展背景页面。那真的是你想要做的吗?

如果您的意图是解析另一个页面,请使用“内容脚本”。 它广泛记录在这里:您的评论后

http://developer.chrome.com/extensions/content_scripts.html

编辑:

所以你只是想摆脱“铬扩展:// ...”的?

var str = 'chrome-extension://kmldadmcjflefibfflbkpmgjdpklghfa/background.html#top'; 
var out = str.replace('chrome-extension://kmldadmcjflefibfflbkpmgjdpklghfa', ''); 

或者更好的是,只需从“this”中获取名称和URL即可。

+0

不,'html'确实来自活动标签。它是字符串,包含来自活动标记的HTML源文件。我很确定。上面的代码只是我的脚本的一部分。 – nanuqcz

+0

好吧,您的代码将返回'background.html#top',但我想要'#top'。所以,我可以手动剪切'background.html'文本,但我认为**这不是干净的方式来做到这一点**。 – nanuqcz

相关问题