【发布时间】:2018-08-27 21:55:28
【问题描述】:
据我了解,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。
【问题讨论】:
-
发布的代码不足以诊断问题。您是否依赖后台脚本中的全局变量?首先,也许您根本不需要后台脚本,因为弹出窗口具有相同的访问级别。其次,确保您查看的是正确的控制台:右键单击弹出窗口并单击“检查”。
-
@wOxxOm,来自文档:触发事件时应激活后台脚本。我从弹出 json 调用事件并且 onMessage 没有触发。我还需要添加哪段代码?顺便说一句,nackground 脚本处于非活动模式,因此 console.log 将不起作用。我的帖子的主要目标是在事件触发时设置背景活动。
-
@wOxxOm,对不起,也许我没有听错你。因为我已经展示了 MCVE。我也没有使用console.log 的问题。我知道背景是单独的页面。我的问题比较清楚。当我从 popup.js 发送消息时,我需要后台激活。
-
当我说它不是 MCVE 时,这意味着发布的代码没有重现问题,因此缺少“V”,我个人觉得争论这些事情很累。假设问题中未发布的所有其他内容均已正确实施,已发布的代码成功运行(logger.log 为 console.log)。
标签: javascript google-chrome browser google-chrome-extension browser-extension