至於其他的答案中提到,你可以調用background.js功能從popup.js像這樣:
var _background = chrome.extension.getBackgroundPage();
_background.backgroundJsFunction();
但是訪問popup.js或background.js popup.html,你應該使用信息架構就像這樣:
// in background.js
chrome.runtime.sendMessage({ property: value });
// in popup.js
chrome.runtime.onMessage.addListener(handleBackgroundMessages);
function handleBackgroundMessages(message)
{
if (message.property === value)
// do stuff
}
然而,似乎可以從同步訪問background.js popup.js,只是就像你可以同時訪問其他方式一樣。 chrome.extension.getViews
可以讓你彈出window
對象,你可以使用它來調用函數,訪問變量和訪問DOM。
var _popup = chrome.extension.getViews({ type: 'popup' })[0];
_popup.popupJsFunction();
_popup.document.getElementById('element');
_popup.document.title = 'poop'
注意getViews()
將返回[]
如果彈出不開,所以你必須處理。
我不知道爲什麼沒有人提到這一點。也許這有一些陷阱或不好的做法,我忽略了?但在我自己擴展的有限測試中,它似乎工作。
昨天正在調查中,我意識到彈出窗口似乎是暫時的;腳本每次打開時都會重新加載。我曾以爲這是一個持久的對象。但是現在我看到任何彈出狀態需要存儲在後臺並在打開彈出窗口時加載。 – 2010-05-05 12:09:12