我试图从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]);
}
}
解决我的问题 我想删除这个主题,但我不能,所以不要这样做,我会把我最后做的事情放在这里。
上面的代码是错误的,因为它正在从网站上获取一个链接列表,并且每个来自它们的脚本都是从存储中获取数据......当然这是愚蠢的。我没有看到一个如此简单的解决方案: 将所有文件的代码放在此函数中 - 它只从存储中获取一次数据。 我很抱歉用这样的主题弄乱这个精彩的论坛。 希望你能原谅。
答案 0 :(得分:1)
help
将返回undefined
,因为它引用了异步函数,而不是该函数的返回值。来自存储的内容看起来打印在content.js:8上,即第8行。