我在Chrome扩展程序的后台页面中传递消息时遇到了麻烦。
在内容页面
我发送消息并等待来自后台页面的回复:
chrome.runtime.sendMessage({"name": "Calling"}, function (response) {
console.log(response);
});
在后台页面
我有一个事件监听器来监听来自内容页面的消息:
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
if (request.name == "Calling") {
doTask().then(function (message) {
sendResponse(message);
});
return true; // Make respond asynchronously
}
}
);
在“调用”事件监听器内部,我调用返回承诺的函数doTask()
:
var doTask = function(){
return new Promise(function (resolve) {
chrome.runtime.sendMessage({"name": "DoTask"}, function (response) {
resolve(response);
});
});
};
在doTask()
内,我发送另一条消息“DoTask”,然后等待回复。
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
if (request.name == "DoTask") {
var message = "Task has done!";
sendResponse(message);
return true; // Make respond asynchronously
}
}
);
我希望“任务已完成!”将在内容页面中打印,但什么都没有出现!调试时我意识到“DoTask”事件监听器无法接收任何消息。
这里有什么不对?谢谢。
P / S:我确保所有脚本都注入manifest.json