在Chrome扩展程序中,我尝试从选项页面获取已保存的信息,并在内容脚本中使用它。我正在向后台脚本传递消息以获取它。我已经在一个临时函数中包含了内容脚本中的sendMessage(我认为这就是它的名称),以便我可以将颜色存储在它之外。不幸的是,它会导致事情无序发生。以下代码的输出是:
3red
1red
2blue
我认为这有一些事情要处理我创建了一个临时函数的事实。
Content_script.js:
(function(){
chrome.runtime.sendMessage({method: "getLocalStorage", key: "favColor"},
function(response) {
console.log("1"+color);
color = response.data;
console.log("2"+color);
}
)
})(color);
console.log("3"+color);
a.style.backgroundColor = color;
Background.js:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.method == "getLocalStorage")
sendResponse({data: localStorage[request.key]});
else
sendResponse({}); // snub them.
});
答案 0 :(得分:2)
这里的问题是chrome运行时是异步运行的。因此,当您执行第一个函数时,它将不会记录这些1和2消息,直到发送响应为止。它注册回调并继续执行脚本的其余部分。由于运行时需要一点时间来响应,即使它可能很快,它也不会收到消息,直到它已经记录3到控制台。