我正在开发一个基本的 Google Chrome 扩展程序,但在从 localStorage 获取值时遇到问题。我在内容脚本中使用 sendMessage 从后台页面请求变量。当我得到响应时,变量始终是“未定义的”,除非我在响应之后放置类似 alert() 的东西......然后变量包含我的值。你能帮我弄清楚为什么会这样以及如何正确地做到这一点吗?我已经为这篇文章编写了代码,它在下面。非常感谢你!
清单.json
{
"name": "Test Extension",
"version": "1.0",
"manifest_version": 2,
"description": "A test extension.",
"background": {
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
],
"permissions": [
"tabs", "<all_urls>"
]
}
内容.js
alert('content');
var color;
chrome.extension.sendMessage({greeting:"color"},function(response){color = response.farewell;});
// alert('pause'); // uncommenting this line lets me get the value...why?
alert('content - ' + color);
背景.js
alert('background');
localStorage["color"] = "lightblue";
var color = localStorage["color"];
alert('background - ' + color);
chrome.extension.onMessage.addListener(function(request,sender,sendResponse)
{
if (request.greeting == "color") {sendResponse({farewell:color});}
});
非常感谢您的帮助!:)