我正在试图制作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值?
通过使用$(this).attr('href')'或'this.getAttribute('href')'而不是'this.href'来读取属性而不是解析的'href'。 –
Rob W:非常感谢!我不知道为什么'$(this).attr('href')'工作并且'this.href'没有,但它解决了我的问题:-) – nanuqcz
因为'this.href'是一个属性,它返回解析后的URL,'.attr'或'.getAttribute'返回元素上设置的属性。 –