我正在查看此页面上的代码演示:https://developer.chrome.com/apps/messaging
代码是这样的:
Content.js
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
Background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});
我最了解代码,但有一点我不明白是“sendResponse”。如果我删除sendResponse({farewell: "goodbye"});
,代码仍然正常,这很好。但是,如果我从sendResponse
中删除function(request, sender, sendResponse) {
,则扩展程序不会传递消息。所以基本上我想知道为什么我需要那个参数,即使我不使用它。感谢
答案 0 :(得分:2)
如果您不打算使用它,则不需要sendResponse()
。
确保排除sendResponse
回调参数:
// no sendResponse arg
function(request, sender) {
删除你的电话:
// remove this
sendResponse({farewell: "goodbye"});
最后,不要试图从响应中记录告别,因为它不存在:
// remove this
console.log(response.farewell);