javascript - 如何使用 chrome.storage.get 函数中的数据?

标签 javascript google-chrome-extension

我正在尝试从 Chrome 扩展存储中获取数据,但我只能在此函数中使用它们。

var help = new Array();

 chrome.storage.local.get(null,  function(storage){   
 //get data from extension storage    
 help = storage;
            console.log(storage);
     });

console.log(help);  // empty

控制台结果:

content.js:1 content script running  
content.js:11 []  
content.js:8 {/in/%E5%BF%97%E9%B9%8F-%E6%99%8F-013799151/: "link", /in/adam-  
isaacs-690506ab/: "link", /in/alex-campbell-brown-832a09a0/: "link",   
/in/alex-davies-41513a90/: "link", /in/alex-dunne-688a71a8/: "link", …}

异步函数获胜。我再次编写了代码,现在函数被调用数百次,我不能以直接方式执行此操作
代码:

console.log("content script running");
var cards = document.getElementsByClassName("org-alumni-profile-card");
var searchText = "Connect";
function check(exi, cards) {
  chrome.storage.local.get(null, function(storage) {
    for (var key in storage) {
      if (storage[key] == "link" && key == exi) {
        cards.style.opacity = "0.3";
      }
    }
  });
}
for (var i = 0; i < cards.length; i++) {
  var ctd = cards[i].getElementsByClassName(
    "org-alumni-profile-card__link-text"
  );
  var msg = cards[i].getElementsByClassName(
    "org-alumni-profile-card__messaging-button-shrunk"
  );

  if (ctd.length < 1 || msg.length > 0) {
    cards[i].style.display = "none";
  } else {
    var exi = cards[i]
      .getElementsByClassName("org-alumni-profile-card__full-name-link")[0]
      .getAttribute("href");
    check(exi, cards[i]);
  }
}

我的问题的解决方案 我想删除这个主题,但我不能,所以我不会这样做,而是把我最终完成的事情放在这里。

上面的代码是错误的,因为它从网站获取链接列表,并且对于每个链接,脚本从存储中获取数据......这当然是愚蠢的。我没有看到如此简单的解决方案: 将所有文件的代码放入此函数中 - 它仅从存储中获取数据一次。 我很抱歉用这样的主题搞乱了这个精彩的论坛。 希望你能原谅。

最佳答案

help 将返回 undefined,因为它引用的是异步函数,并且不是该函数的返回值。存储中的内容看起来打印在 content.js:8 上,即第 8 行。

关于javascript - 如何使用 chrome.storage.get 函数中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48722018/

相关文章:

javascript - Cropper 在使用 dropzone js 上传之前裁剪多个图像

javascript - chrome.tabs.create 在 Chrome 启动时不起作用

javascript - 从 hotmail 页面提取电子邮件正文

javascript - 不能依赖 chrome.tabs.move 中的索引

javascript - 简单的 Chrome 扩展不会显示弹出窗口

javascript - Greasemonkey 中的本地存储

javascript - 日期选择器不允许过去的日期加上今天

javascript - Chart.js 垂直对称图表

Javascript |回调到clearInterval,可能吗?

javascript - 重复 DOM 元素的流畅方式