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

时间:2018-02-10 14:52:22

标签: 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", …}

异步功能赢了。我再次编写了我的代码,现在函数被调用了数百次,我不能以dirrefent的方式执行此操作 代码:

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

解决我的问题 我想删除这个主题,但我不能,所以不要这样做,我会把我最后做的事情放在这里。

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

1 个答案:

答案 0 :(得分:1)

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