他の回答が言及しているように、次のように 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
popupwindow
オブジェクトを取得でき、それを使用して関数を呼び出し、変数にアクセスし、DOM にアクセスできます。
var _popup = chrome.extension.getViews( { type: 'popup' } )[0];
_popup.popupJsFunction();
_popup.document.getElementById('element');
_popup.document.title = 'poop'
ポップアップが開いていない場合はgetViews()
が返されるので、それを処理する必要があることに注意してください。[]
他の誰もこれについて言及しなかった理由はわかりません。おそらく、私が見落としているいくつかの落とし穴や悪い習慣があるのでしょうか? しかし、私自身の拡張機能での限定的なテストでは、うまくいくようです。