2014-02-27 97 views
0

background.js頁面內容時,標籤在Chrome擴展名改成

var htmlcontent = null; 

chrome.tabs.onUpdated.addListener(function() { 
onWindowLoad(); 
alert(htmlcontent); 
}); 

chrome.tabs.onHighlighted.addListener(function(){ 
onWindowLoad(); 
alert(htmlcontent); 
}); 

function onWindowLoad() { 
chrome.tabs.executeScript(null, { 
file: "getPagesSource.js" 
}, function() { 
if (chrome.extension.lastError) { 
htmlcontent = 'There was an error injecting script : \n' + chrome.extension.lastError.message; 
} 
}); 
} 

chrome.extension.onMessage.addListener(function(request, sender) { 
if (request.action == "getSource") { 
htmlcontent = request.source; 
} 
}); 

getPagesSource.js

function DOMtoString(document_root) { 
return document.body.innerText ; 
} 

chrome.extension.sendMessage({ 
action: "getSource", 
source: DOMtoString(document) 
}); 

我開發一個Chrome擴展。我能夠在重新加載當前窗口的正文內容,但是當我更改選項卡時,我無法獲取內容。前一個標籤的內容正在保存。我使用了錯誤的API嗎?或者當我在Chrome中更改標籤時,如何觸發onUpdate功能?

回答

1

終於找到了。

我打印的chrome.tabs.onHighlighted.addListener)中的HTML內容(功能(在那一瞬間,我仍然不會已經得到了價值。

的htmlcontent值將被設置爲只在該chrome.extension.onMessage.addListener(函數()。

所以,如果你嘗試和打印htmlcontent,你仍然會具有一個選項卡的內容。

所以流量,

chrome.tabs.onUpdated.addListener(function() { 
onWindowLoad(); 
}); 

function onWindowLoad() { 
chrome.tabs.executeScript(null, { 
file: "getPagesSource.js" 
}, function() { 
if (chrome.extension.lastError) { 
htmlcontent = 'There was an error injecting script : \n' +  chrome.extension.lastError.message; 
} 
}); 
} 

chrome.extension.onMessage.addListener(function(request, sender) { 
if (request.action == "getSource") { 
htmlcontent = request.source; 
//call whatever function from here on so that htmlcontent will have the selected tab's content. 
} 
}); 
0

通過「當我更改標籤」是否意味着更改哪個標籤是活動的?

確保您瞭解的標籤API中的事件和回調的參數: http://developer.chrome.com/extensions/tabs

我不能確定你想要做什麼,但是當你改變tabs.onActivated事件被觸發哪個標籤是活動的。也許你想添加一個監聽器,而不是tabs.onHighlighted。

另外,chrome.tabs.executeScript的第一個參數應該是要執行腳本的標籤的標籤ID(如果爲null,則在活動標籤中執行)。標籤事件的回調具有附加參數,例如,該標籤所在的窗口,還是該標籤仍在加載或完成。

+0

「更改標籤」我的意思是,切換之前加載的標籤。我需要使用哪些chrome API,以便chomre.tabs.executeScript可以在「CHANGED TAB」上執行?爲了提供更清晰的視圖,假設我在Chrome瀏覽器中加載了標籤1,2和3。目前我在標籤1中。當我切換到標籤2時,我需要捕捉到內聯文本。但在我的代碼中,當我切換到標籤2時,我得到了標籤1的innerText。我如何獲取已更改標籤的innerText而不是以前標籤的文本? – nikhil

相關問題