首页 > 解决方案 > 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');
}); 

我想要达到的目标:

  1. 每天更新一次翻译、错误消息等。在这种情况下,我在 background.js 中创建了一个警报,它下载包含元数据的 JSON,但我需要将其存储在本地,但这不适用于 background.js
  2. 创建一个选项卡,下载源代码并解析它。我可以在 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'],
}

但我需要一个我的用例没有的目标。

谢谢

标签: google-chrome-extensionchrome-extension-manifest-v3

解决方案


推荐阅读