0

我正在尝试向我的扩展程序的后台页面发送一条消息,以从中获取数据chrome.storage并将其返回到请求该数据的内容脚本。chrome.storage由于 Firefox 的兼容性问题,我必须通过后台页面访问。

问题是我使用了 2 个异步函数chrome.storagechrome.runtime.sendMessage,这意味着它undefined总是被返回。

内容脚本:

chrome.runtime.sendMessage({
    getStorage: ["sync", "prefs"]
}, function (data) {
    var prefs = data.prefs;
    //returns error since data is undefined
});

背景:

chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
       if (request.getStorage) {

          var type = request.getStorage[0];
          var name = request.getStorage[1];

          if (type == "sync") {
              chrome.storage.sync.get(name, function (data) {
                  sendResponse(data);
              });
          } else {
                  chrome.storage.local.get(name, function (data) {
                  sendResponse(data);
              });
          }
       }
});
4

0 回答 0