Chrome扩展程序:单击popup.js即可激活并执行background.js

时间:2018-08-27 21:55:28

标签: javascript google-chrome browser google-chrome-extension browser-extension

Manage Events with Background ScriptsMigrate 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。

1 个答案:

答案 0 :(得分:0)

您错过了this part in the documentation,后者说明了如何从popup.js激活后台脚本。检索背景页面对象后,您只需要调用任何函数甚至访问一个字段即可。

我总是将其放在popup.js的顶部:

// Initialize background page
chrome.runtime.getBackgroundPage(function(backgroundPage) {
  console = backgroundPage.console;
})

这样,我还可以从弹出窗口中查看控制台日志以及从后台视图中查看日志