Javascript chrome.storage.local有时不工作
我正在创建一个chrome扩展,这是我第一次使用JS或async BG脚本获取JSON,并在初始化chrome/extension时将所有数据保存到本地存储中。一旦用户导航到特定页面,内容脚本就会启动并根据本地存储检查页面中的特定ID。如果找到id,它将创建一个元素,旁边有一个图标 它很好用。然而,当我重新加载页面时,从本地存储中没有得到任何信息,即使我想从那里记录所有信息,也没有记录任何信息。好像仓库是空的 可能与异步有关?奇怪的是,代码的最内部部分仍然记录了一个事实,即在存储中找不到id,因此没有跳过任何内容 我的内容脚本如下所示:Javascript chrome.storage.local有时不工作,javascript,google-chrome-extension,local-storage,Javascript,Google Chrome Extension,Local Storage,我正在创建一个chrome扩展,这是我第一次使用JS或async BG脚本获取JSON,并在初始化chrome/extension时将所有数据保存到本地存储中。一旦用户导航到特定页面,内容脚本就会启动并根据本地存储检查页面中的特定ID。如果找到id,它将创建一个元素,旁边有一个图标 它很好用。然而,当我重新加载页面时,从本地存储中没有得到任何信息,即使我想从那里记录所有信息,也没有记录任何信息。好像仓库是空的 可能与异步有关?奇怪的是,代码的最内部部分仍然记录了一个事实,即在存储中找不到id,因
var storage = chrome.storage.local;
loopThatList();
function loopThatList() {
var logoElements = document.querySelectorAll('.class > a:not(.class)');
chrome.runtime.sendMessage({removeRatedValueObj: "get"}, function(response) {
console.log(response.removeRatedValueObj);
chrome.storage.local.get(function(result){console.log(result)});
logoElements.forEach(function(item, i) {
var href = item.href;
var regex = /(?:https:\/\/www\.site\.com\/stuff\/|-[^$]+)/gm;
var id = href.replace(regex, '');
storage.get(id, function(result){
var hasRating = item.parentNode.parentNode.querySelector('.rating > span');
if (typeof(hasRating) !== "undefined" && hasRating !== null && response.removeRatedValueObj === "true") {
item.parentNode.parentNode.remove();
}
else {
if(!isEmpty(result)) {
//stuff;
}
else if (isEmpty(result)) {
console.log("Cannot find id in storage");
}
}
});
});
});
}
function isEmpty(obj) {
for(var key in obj) {
if(obj.hasOwnProperty(key))
return false;
}
return true;
}
数据被保存到BG脚本中的本地存储中,根据我所读到的,当您启动chrome或打开扩展时会发生这种情况。(我已经建立了日志记录,它支持这一点)因此,在内容脚本想要访问本地存储之前,数据就已经在那里了。还是我遗漏了什么?至于幸运的conincidence,我可以刷新页面100次,数据将加载100/100。这种情况只有在一段时间内没有使用该选项卡时才会发生。在没有看到后台脚本中的真实代码的情况下,我所拥有的只是“BG脚本获取JSON并将所有数据保存到本地存储”,因此我假设这种情况发生在onMessage listener中。但是有了新的信息,这听起来像是Chrome中的一个bug。我将编辑主要帖子,对此感到抱歉。你认为现在正确的行动是什么?在哪里报告它,这样它就不会失败?不久前我看到了一个chromium论坛。编辑:找到此页面您可以通过手动冻结/放弃
chrome://discards
错误报告网站的短URL为。将尝试返回报告。谢谢你,我不知道chrome://discards
。