至于其他的答案中提到,你可以调用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