檢測何時打開彈出窗口非常容易,因爲每次打開彈出窗口時都會執行其中的代碼。所以你所要做的就是在彈出代碼的開始處向背景頁面發出請求。
第二部分將按需要插入內容腳本(按照我的理解,插入到當前標籤中)。
所以整個擴展的結構應該是這樣的:
popup.html
//this will run each time popup opens
chrome.extension.sendRequest("start", function(data) {
//display data received from background page through content script
});
background.html
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if(request == "start") {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.executeScript(tab.id, {file: "contentscript.js"}, function() {
//content script is injected, send a request to it
chrome.tabs.sendRequest(tab.id, "get_data", function(data){
//content script sent response back with data we need to display in popup
sendResponse(data);
});
});
});
}
}));
東西要記住的是,彈出窗口在收到數據時可能已關閉,因此您可能會這樣做需要添加一些錯誤處理。
第二個問題是避免將內容腳本兩次注入同一頁面。這可能是有挑戰性的,所以我建議如果你的內容腳本很小,那麼只需將它注入所有頁面(在清單中)。
你描述了它應該如何工作,但沒有說出什麼問題。你有哪些麻煩? – serg 2011-05-18 15:50:41
@serg嗨Serg,我不知道如何使點擊彈出時的擴展觸發器。需要有關的信息。 – RaviTeja 2011-05-18 16:29:03
*點擊彈出窗口(即點擊瀏覽器圖標時) – RaviTeja 2011-05-18 16:35:31