由于 background.js 是一个服务工作者,我不能使用 DOM 函数或本地存储。我试图通过使用消息在 background.js 之外执行 JS 来解决问题,但是通过简单的消息传递,我收到错误消息:无法建立连接。接收端不存在。
在 background.js 我有:
chrome.runtime.sendMessage({ data: [action] }, function (response)
{
console.log('sending message');
});
在 popup.js 我有:
chrome.runtime.onMessage.addListener((message, sender, reply) =>
{
console.log('message received');
});
我想要达到的目标:
- 每天更新一次翻译、错误消息等。在这种情况下,我在 background.js 中创建了一个警报,它下载包含元数据的 JSON,但我需要将其存储在本地,但这不适用于 background.js
- 创建一个选项卡,下载源代码并解析它。我可以在 manifest v2 中的 background.js 中执行此操作,但我不得不将这些函数移至 popup.js,但这很烦人,因为 popup.js 很容易被中断。
我如何使用 background.js 在后台创建重复任务并将一些内容发送到其他脚本以弥补 background.js 不能做的事情?我猜 popup.js 并不总是处于活动状态或总是在听,这可能就是我收到此错误消息的原因。
我想用这个:
chrome.scripting.executeScript(
{
target: {tabId: tab.id, allFrames: true},
files: ['myscript.js'],
}
但我需要一个我的用例没有的目标。
谢谢