Как уже упоминалось в других ответах, вы можете вызывать функции background.js из popup.js следующим образом:
var _background = chrome.extension.getBackgroundPage();
_background.backgroundJsFunction();
Но чтобы получить доступ к popup.js или popup.html из background.js, вы должны использовать архитектуру сообщений следующим образом:
// 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
}
Однако, похоже, что вы можете синхронно обращаться к popup.js из background.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()
вернет []
, если всплывающее окно не открыто, поэтому вы должны с этим справиться.
Я не уверен, почему никто другой не упомянул это. Возможно, есть некоторые подводные камни или плохие практики, которые я упустил из виду? Но в моем ограниченном тестировании в моем собственном расширении это похоже на работу.