Chome扩展:将chrome.storage数据从后台脚本发送到弹出窗口/内容脚本

bkvchu

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

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

popup.js:

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

background.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上的文档

sendResponse(function)
[...]事件侦听器返回时,此函数将变为无效,除非您从事件侦听器返回true表示您希望异步发送响应(这将使消息通道向另一端开放,直到sendResponse叫做)。

由于sendResponsechrome.storage.local.get()的回调中异步调用,因此您需要从onMessage侦听器返回true,以防止该函数失效。

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`
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Chome扩展:将chrome.storage数据从后台脚本发送到弹出窗口/内容脚本

来自分类Dev

Chrome扩展程序错误,尝试将数组从内容脚本发送到弹出脚本

来自分类Dev

将sqlresult从后台发送到内容脚本

来自分类Dev

Chrome扩展程序将消息从iFrame发送到事件页面,然后再发送到内容脚本

来自分类Dev

Chrome扩展程序将Background.js中的消息发送到内容脚本

来自分类Dev

将chrome.storage中设置的值从选项页面发送到内容脚本

来自分类Dev

在启动时将bash脚本发送到后台

来自分类Dev

Shell脚本:将输入发送到后台进程

来自分类Dev

Chrome扩展程序:将数据发送到使用chrome.windows.create创建的窗口

来自分类Dev

在Chrome扩展程序中,如何将跨域消息从父内容脚本发送到特定子iframe中的内容脚本

来自分类Dev

在Chrome扩展程序的背景页面的onClick事件上将消息发送到内容脚本

来自分类Dev

无法在Chrome扩展程序中使用postMessage从父窗口将数据发送到iframe

来自分类Dev

无法使用Chrome扩展程序中的postMessage从父窗口将数据发送到iframe

来自分类Dev

将数据从页面发送到 chrome 扩展

来自分类Dev

使用AngularJS将数据发送到php脚本

来自分类Dev

如何通过Ajax将数据发送到Perl脚本?

来自分类Dev

将数据发送到在线PHP脚本

来自分类Dev

使用提交按钮将数据发送到PHP脚本

来自分类Dev

如何将数据从Django脚本发送到MySQL

来自分类Dev

Ajax JQuery将数据发送到php脚本

来自分类Dev

将数据从CasperJS脚本发送到PHP

来自分类Dev

使用提交按钮将数据发送到PHP脚本

来自分类Dev

将消息发送到Python脚本

来自分类Dev

Chrome扩展程序创建新标签页,并将消息从popup.js发送到新标签页的内容脚本

来自分类Dev

如何将 php 脚本中的 SQL 数据增益发送到 python 脚本?

来自分类Dev

将数据从脚本发送到统一然后统一到脚本

来自分类Dev

无法将数据从弹出窗口发送到extension.js

来自分类Dev

将表单数据发送到按钮提交时的弹出窗口

来自分类Dev

将数据发送到弹出窗口,Windows边栏小工具

Related 相关文章

  1. 1

    Chome扩展:将chrome.storage数据从后台脚本发送到弹出窗口/内容脚本

  2. 2

    Chrome扩展程序错误,尝试将数组从内容脚本发送到弹出脚本

  3. 3

    将sqlresult从后台发送到内容脚本

  4. 4

    Chrome扩展程序将消息从iFrame发送到事件页面,然后再发送到内容脚本

  5. 5

    Chrome扩展程序将Background.js中的消息发送到内容脚本

  6. 6

    将chrome.storage中设置的值从选项页面发送到内容脚本

  7. 7

    在启动时将bash脚本发送到后台

  8. 8

    Shell脚本:将输入发送到后台进程

  9. 9

    Chrome扩展程序:将数据发送到使用chrome.windows.create创建的窗口

  10. 10

    在Chrome扩展程序中,如何将跨域消息从父内容脚本发送到特定子iframe中的内容脚本

  11. 11

    在Chrome扩展程序的背景页面的onClick事件上将消息发送到内容脚本

  12. 12

    无法在Chrome扩展程序中使用postMessage从父窗口将数据发送到iframe

  13. 13

    无法使用Chrome扩展程序中的postMessage从父窗口将数据发送到iframe

  14. 14

    将数据从页面发送到 chrome 扩展

  15. 15

    使用AngularJS将数据发送到php脚本

  16. 16

    如何通过Ajax将数据发送到Perl脚本?

  17. 17

    将数据发送到在线PHP脚本

  18. 18

    使用提交按钮将数据发送到PHP脚本

  19. 19

    如何将数据从Django脚本发送到MySQL

  20. 20

    Ajax JQuery将数据发送到php脚本

  21. 21

    将数据从CasperJS脚本发送到PHP

  22. 22

    使用提交按钮将数据发送到PHP脚本

  23. 23

    将消息发送到Python脚本

  24. 24

    Chrome扩展程序创建新标签页,并将消息从popup.js发送到新标签页的内容脚本

  25. 25

    如何将 php 脚本中的 SQL 数据增益发送到 python 脚本?

  26. 26

    将数据从脚本发送到统一然后统一到脚本

  27. 27

    无法将数据从弹出窗口发送到extension.js

  28. 28

    将表单数据发送到按钮提交时的弹出窗口

  29. 29

    将数据发送到弹出窗口,Windows边栏小工具

热门标签

归档