我目前正在将我的一个用户脚本转换为Chrome扩展程序。我仍然坚持的唯一事情是成功地将localStorage值存储在我的内容脚本中的变量中。我将在这里给出一个例子,其他的相似但有其他名称。
var REMOVE_WARNINGS;
chrome.extension.sendRequest({method: "REMOVE_WARNINGS"}, function(response) {
console.log(response.status);
REMOVE_WARNINGS = response.status == "true";
});
如您所见,我查询扩展的localStorage以获取分配给“REMOVE_WARNINGS”的值。我这样做是因为在内容脚本中进一步检查此变量,以检查它是否必须执行某些操作。原始值通过选项页面在localStorage中通过HTML选项分配,无论是真还是假,这都没有问题。值“true”(或“false”)成功返回到内容脚本的方法并打印在控制台中,因为我已经检查过它。 DOES NOT 的工作原理是将值分配给我的内容脚本中的全局变量REMOVE_WARNINGS。
我尝试了一些选项,包括REMOVE_WARNINGS = response.status;
,REMOVE_WARNINGS = response.status == "true";
,我也尝试删除控制台输出行,认为它可能会破坏性地打印。这些选项似乎都没有在全局变量中成功存储布尔值“true”或“false”,因为脚本不会执行它应该执行的操作。
有谁看到我在这里做错了什么?我在这一点上完全迷失了,特别是因为明确阅读价值是没有问题的。它将它存储在内容脚本的全局变量中,这就是问题所在。
干杯 肯尼斯
答案 0 :(得分:3)
如果我错了,请纠正我,但我认为你正在尝试做类似的事情:
var REMOVE_WARNINGS;
chrome.extension.sendRequest({method: "REMOVE_WARNINGS"}, function(response) {
console.log(response.status);
REMOVE_WARNINGS = response.status == "true";
});
console.log(REMOVE_WARNINGS); //this console.log will fail? right?
尝试修改您的代码:
chrome.extension.sendRequest({method: "REMOVE_WARNINGS"}, function(response) {
console.log(response.status);
REMOVE_WARNINGS = response.status == "true";
doSomething();
});
function doSomething() {
console.log(REMOVE_WARNINGS); //this one should work
}