我正在制作一个 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
返回未定义。我找不到原因。感谢您的帮助!
最佳答案
chrome.runtime.sendMessage
是异步的。
您的函数 canGo()
将在发送消息后立即终止,并且稍后将异步调用回调。您不能立即使用响应,必须在回调中使用它。
function canGo() {
chrome.runtime.sendMessage({ message: 'go' }, function(response) {
console.log(response.go);
if(response.go) { /* ... */ }
else { /* ... */ }
});
}
关于javascript - 内容脚本未收到我发送的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25698248/