2013-03-30 68 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

相關問題