我正在看此页面上的代码演示: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) {
,则扩展名不会随消息传递而传递。因此,基本上,我想知道为什么即使我不使用它也需要该参数。谢谢 最佳答案
如果您不打算使用sendResponse()
,则不需要它。
确保排除sendResponse
回调参数:
// no sendResponse arg
function(request, sender) {
并删除您的通话:
// remove this
sendResponse({farewell: "goodbye"});
最后,不要尝试记录响应的告别,因为它不会存在:
// remove this
console.log(response.farewell);