据Manage Events with Background Scripts和Migrate to Event Driven Background Scripts所知,events触发时应激活后台脚本。
background.js
chrome.runtime.onMessage.addListener((message, sender, reply) => {
const json = message.data;
// some code
reply({ result: true })
return true;
});
popup.js
chrome.runtime.sendMessage({ data: [<ArrayWithData>] },
function (response) {
logger.log(response);
}
);
一切正常,但只有在背景活跃的情况下。
为什么背景不活跃?有人可以解释我的错误吗? 或如何在单击popup.js时激活并执行background.js ?
我知道,如果我在 manifest.json 中更改persistence: true
或只是将其删除,一切都会正常。但是我想保留persistence false
并在需要时触发background.js。
答案 0 :(得分:0)
您错过了this part in the documentation,后者说明了如何从popup.js
激活后台脚本。检索背景页面对象后,您只需要调用任何函数甚至访问一个字段即可。
我总是将其放在popup.js
的顶部:
// Initialize background page
chrome.runtime.getBackgroundPage(function(backgroundPage) {
console = backgroundPage.console;
})
这样,我还可以从弹出窗口中查看控制台日志以及从后台视图中查看日志