我正在制作Chrome扩展程序,我希望将内容脚本中的消息发送到后台脚本,请求发回的var。像这样:
contentscript.js --> ask for var --> background.js
|
contentscript.js <-- give var <------------
这是文件:
// contentscript.js
'use strict';
function canGo() {
chrome.runtime.sendMessage({ message: 'go' }, function(response) {
return response.go;
});
}
console.log(canGo()); // undefined
和
// background.js
'use strict';
var go = false;
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.message == 'go') {
sendResponse({ go: go });
}
}
);
所以问题是函数canGo
返回undefined。我无法找到原因。谢谢你的帮助!
答案 0 :(得分:1)
chrome.runtime.sendMessage
是异步的。
您的函数canGo()
将在发送消息后立即终止,稍后将异步调用回调。您不能立即使用响应,必须在回调中使用它。
function canGo() {
chrome.runtime.sendMessage({ message: 'go' }, function(response) {
console.log(response.go);
if(response.go) { /* ... */ }
else { /* ... */ }
});
}