Chrome扩展程序:在内容脚本中将localStorage值转换为布尔值

时间:2013-01-20 14:16:55

标签: javascript google-chrome global-variables content-script

我目前正在将我的一个用户脚本转换为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”,因为脚本不会执行它应该执行的操作。

有谁看到我在这里做错了什么?我在这一点上完全迷失了,特别是因为明确阅读价值是没有问题的。它将它存储在内容脚本的全局变量中,这就是问题所在。

干杯 肯尼斯

1 个答案:

答案 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
}