Chome 扩展:将 chrome.storage 数据从后台脚本发送到 popup/contentscript

2023-12-06

如标题中所述,我正在尝试编写一个后台脚本,该脚本将侦听来自 popup.js 或 contentscript.js 的加载请求。当它接收到负载时,它会获取 chrome.storage.local 的内容,执行一些数据处理(for 循环)并将其发送给请求者。

当前的问题是我的代码收到请求,但无法发回数据。我的代码如下:

弹出.js:

chrome.runtime.sendMessage({greeting: "Load"}, function(response) {
  console.log(response);
}

背景.js:

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
  if(request.greeting=='Load') {
    chrome.storage.local.get(null,function(storeObject){
      var newList=[];
      //Perform some dataprocessing to store part of storeObject into newList
      sendResponse(newList);
    });
  }
});

我认为这个问题与范围有关,因为调试后看起来 sendResponse 正在尝试从 chrome.storage 而不是 background.js 发送。另外,如果我将消息发送到 chrome.storage.local 回调之外(之前/之后),popup.js 会收到该消息。无论如何,我对如何使此消息传递正常工作感到非常迷茫,并且希望得到任何帮助。


根据文档`chrome.runtime.onMessage:

发送响应(函数)
[...]当事件监听器返回时,此函数将变得无效,除非您从事件监听器返回 true 来指示您希望异步发送响应(这将使消息通道保持对另一端开放,直到调用 sendResponse 为止)。

Since, sendResponse被异步调用chrome.storage.local.get()的回调,你需要从onMessage监听器以防止函数失效。

chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    if (request.greeting === 'Load') {
        chrome.storage.local.get(null, function(storeObject) {
            ...
            sendResponse(newList);
        });
        return true;   // <-- I intend to call `sendResponse` later
    }
    return false;   // <-- I do NOT intend to call `sendResponse`
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chome 扩展:将 chrome.storage 数据从后台脚本发送到 popup/contentscript 的相关文章

随机推荐

  • 使用 AJAX 提交表单 PHP JQuery 将我带到操作页面

    我试图在不刷新页面的情况下提交此表单 但是当我提交时 它会将我带到操作页面 我的代码有什么问题吗 这是我的表格
  • 使用 pyODBC、unixODBC 和 FreeTDS 连接到 MS SQL Server 时出错(在 Mac 上)

    当尝试使用 pyODBC gt unixODBC gt FreeTDS gt MS SQL 堆栈在 python 中连接到 MS SQL 服务器时 出现错误 我在这个问题上花了很多时间 如果您遇到这个问题并解决与工作建立联系的更基本问题 这
  • 如何在 Visual Studio 2010 Express 中将 CPP 编译为 DLL

    我有一个 cpp 它依赖于同一文件夹中的几个标头 我需要将这个cpp编译成dll 如何在 Visual Studio 2010 ExpressS 中执行此操作 我在网上找到了几篇关于 Visual Studio 2008 的文章 但在 20
  • 打字稿错误地将元组推断为数组

    首先为我的英语道歉 我有一个类似的功能function func string string 它返回一个元组 但是 当我实现像这样的 return 语句时 var test text foo bar return test Typescri
  • Coldfusion CFPDF 读取二进制数据库列

    cfpdf可以直接读取二进制数据库列吗 我目前在运行查询来获取列的地方拥有它 使用cffile将文件写入目录 然后用 cfpdf 阅读 这样我就可以提取文本 是否可以在不使用 cffile 写入并直接读取二进制文件的情况下执行此操作 如果是
  • php 未找到设置的 cookie

    我已经成功设置了cookiecad并可以在 Firefox cookie 搜索中看到它 if isset COOKIE cad echo YES else echo NO parse NO 我正在托管服务器上设置我的网站 即将从另一个服务器
  • 将 JUnit 5 测试结果与 Intellij 测试报告集成

    我的 build gradle 配置如下 apply plugin java compileTestJava sourceCompatibility 1 8 targetCompatibility 1 8 repositories mave
  • Windows 中 Node.js 中 process.on('SIGINT') 的等价物是什么?

    I m following the guidance here listening for SIGINT events to gracefully shutdown my Windows 8 hosted node js applicati
  • PowerBI 动态时间序列条形图

    在这里补充我之前的问题 时间序列问题 我想在时间序列 其中包含用户设置的日期范围 上绘制单位容量图表 我试图绘制的图表如下 对于每个单元名称 我都有单元容量的开始和结束日期 如下 PowerBI 表所示 4个子问题 如何绘制这些容量随时间变
  • 如何从单一行为中提取价值

    是否有带签名的内置函数 Monad m gt m a gt a Hoogle 说没有这样的功能 你能解释一下为什么吗 一个 monad 只提供两个功能 return Monad m gt a gt m a gt gt Monad m gt
  • 异步ajax请求锁定浏览器

    这是启动一个简单的代码片段异步阿贾克斯请求 请求的处理时间为故意长 10 秒或更长时间 Why 浏览器阻止我的用户点击在异步请求过程中在 href 链接上 已尝试使用 Firefox 和 Chrome The 异步请求通常被调用并且 就绪
  • 如何将Python项目转换为可执行文件

    我有一个 Python 项目 我想将其转换为可执行文件 我已经安装了Pyinstaller 我只知道如何将一个脚本转换为 exe 但我有多个包含多个 python 脚本的包 我成功使用的命令行是 pyinstaller noupx onef
  • 是否可以将 Xamarin ios 应用程序连接到 swift watchOS 扩展

    我已经有一个在 swift 下开发的 WatchOSExtension 是否可以将其连接到新开发的 xamarin ios 项目 不 不可能将 Swift 扩展与 Xamarin 应用程序一起使用 这也适用于任何形式的 iOS 扩展 您将需
  • 按值返回的右值引用参数是 xvalue 吗?

    我的理解是 在下面的函数中 表达式foo在声明中return foo 是一个 xvalue 因为它表示的对象即将过期 即使foo是前面语句中的左值 Foo bar Foo foo change foo return foo 此类到期值不属于
  • 跟进术语,寻找行动项目

    我想编写一个快速脚本来提醒自己将后续操作项目放在各种谷歌文档上 从谷歌驱动器中受益 以便从 API list 中受益 然而 似乎followup actionitems搜索查询不适用于 API 因为搜索词未知 它返回 400 错误 例如 这
  • 尝试 listview.getChildAt() 时出现 java.lang.NullPointerException

    ListView 具有正确的值 public class FragmentTab1 extends SherlockFragment ListView list LazyAdapter adapter Override public voi
  • 获取父 ID 的子页面并显示自定义图像字段以及 WordPress 中页面的链接

    我需要获取子页面列表 但我需要排除第一个子页面 我还需要显示一个名为 page icon 的自定义图像字段 其中包含每个图像的 url 和页面标题 这将充当子菜单 将显示在每个子页面上 每个菜单项都需要将当前类附加到 a 标签 我尝试了多种
  • Accumulo 支持聚合吗?

    我是 Accumulo 的新手 我知道我可以编写 Java 代码来使用 Hadoop 和 MapReduce 扫描 插入 更新和删除数据 我想知道的是 Accumulo 中是否可以进行聚合 我知道在MySql中我们可以使用groupby o
  • Windows 中用于生物识别身份验证的凭据提供程序

    我有一个定制的基于 USB 的指纹识别设备 如何将设备上的指纹与 Windows 计算机的用户关联起来 使用 CredentialProvider 首先 我希望在指纹扫描时自动登录 而不提示输入用户名 密码 我意识到应该有一些注册过程来将指
  • Chome 扩展:将 chrome.storage 数据从后台脚本发送到 popup/contentscript

    如标题中所述 我正在尝试编写一个后台脚本 该脚本将侦听来自 popup js 或 contentscript js 的加载请求 当它接收到负载时 它会获取 chrome storage local 的内容 执行一些数据处理 for 循环 并