2010-01-14 150 views
10

我一直在網上搜索,以瞭解如何訪問當前選項卡DOM以從background.html中提取頁面中的信息。到目前爲止,我沒有運氣,或者至少沒有什麼能夠正常工作。谷歌瀏覽器擴展程序 - 訪問DOM

簡單說明問題。我想在頁面上獲得一個iFrame的src。有什麼建議麼?

回答

7

一種方式,你把它當作一個單一的請求來處理內容腳本,它將獲取你想要訪問的dom。 http://code.google.com/chrome/extensions/messaging.html#simple

基本上,你的內容腳本設置監聽器:

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) { 
    if (request.greeting == "hello") 
     sendResponse({farewell: "goodbye"}); 
    else 
     sendResponse({}); // snub them. 
    }); 

和你的背景頁面發送一個壽命的要求:

chrome.tabs.getSelected(null, function(tab) { 
    chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) { 
    console.log(response.farewell); 
    }); 
}); 

當你發送你的迴應,你把它作爲JSON數據,你可以獲取任何你想要的(如html,dom,文本等)。

這是目前讓背景頁面知道任何關於頁面內容的唯一方法。請記住,您需要內容腳本和選項卡權限。

+8

請注意,這個答案已過時。 'SendRequest'和'getSelected'已棄用。提供的腳本不起作用。 – sbichenko 2012-10-04 07:26:10

+4

aaaand應該被替換爲Chrome 20 – 2013-05-01 16:21:34

+1

aaaaa中的sendMessage/onMessage,一個例子會非常出色。 :-) – Ajax 2015-12-15 12:47:22