正如其他答案所提到的,您可以像这样从 popup.js 调用 background.js 函数:
var _background = chrome.extension.getBackgroundPage();
_background.backgroundJsFunction();
但是要从 background.js 访问 popup.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()
它将返回,因此您必须处理它。[]
我不确定为什么没有其他人提到这一点。也许我忽略了一些陷阱或不良做法?但是在我自己扩展的有限测试中,它似乎有效。