1

我目前正在将我的一个用户脚本转换为 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”的值。我这样做是因为在内容脚本的后面,会检查此变量以查看它是否必须执行某些操作。原始值通过 HTML 选项(true 或 false)通过选项页面在 localStorage 中分配,这没有问题。值“true”(或“false”)成功返回到内容脚本的方法并打印在控制台中,因为我已经检查过了。不起作用的是将值分配给我的内容脚本中的全局变量REMOVE_WARNINGS 。

我尝试了一些选项,包括REMOVE_WARNINGS = response.status;REMOVE_WARNINGS = response.status == "true";并且我还尝试删除控制台输出行,认为它可能会破坏性地打印。这些选项似乎都没有成功地将布尔值“true”或“false”存储在全局变量中,因为脚本没有执行它应该执行的操作。

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

干杯肯尼斯

4

1 回答 1

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
}
于 2013-01-20T14:37:25.630 回答