google-chrome-extension - Chrome 扩展(从后台到其他 js 的消息):无法建立连接。接收端不存在
问题描述
由于 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'],
}
但我需要一个我的用例没有的目标。
谢谢
解决方案
推荐阅读
- javascript - 如何在 React 无状态组件中使用 ES6 map 函数
- javascript - 如何使未知数量的 div 平均填充所有剩余空间?
- wpf - 树视图上的工具提示
- ruby-on-rails - 如果包含 Pry 调试器语句,则函数返回不同的值
- r - session$onFlushed 搞砸了 invalidateLater
- php - 如何注释包含关闭注释分隔符的代码
- javascript - 无法移动使用 super 的方法
- reactjs - React + ASPNET Core + Prerendering:尝试以访问权限禁止的方式访问套接字
- angular - 如何将我的对象传递给 Angular 6 中的 queryParams?
- bash - 使用 2 个割变量进行除法