我在后台页面中将此函数用作onMessage侦听器:
dispatchMessage = (request, sender, sendResponse) ->
return if not request.type?
log "Request '#{request.type}' form #{sender.tab.id}"
log request
switch request.type
when "setAssociationMainFrame" then setAssociationMainFrame request.frame
when "sendMe"
chrome.tabs.sendMessage sender.tab.id,
request.message,
(response) ->
sendResponse response
when "inventaireCosium"
displayPageAction sender.tab.id,
"Inventaire Cosium",
"/src/html/inventaire/pageAction.html"
when "startInventaireCosium"
log request.type
sendResponse()
return
问题是,当我收到“sendMe”消息时,回调sendResponse不起作用。我没有得到任何异常或错误,但我传递给sendMessage参数的函数不是调用。
编辑:我还发布了以前的coffescript的javascript traduction:
// Generated by CoffeeScript 1.9.0
var dispatchMessage;
dispatchMessage = function(request, sender, sendResponse) {
if (request.type == null) {
return;
}
log("Request '" + request.type + "' form " + sender.tab.id);
log(request);
switch (request.type) {
case "setAssociationMainFrame":
setAssociationMainFrame(request.frame);
break;
case "sendMe":
chrome.tabs.sendMessage(sender.tab.id, request.message, function(response) {
return sendResponse(response);
});
break;
case "inventaireCosium":
displayPageAction(sender.tab.id, "Inventaire Cosium", "/src/html/inventaire/pageAction.html");
break;
case "startInventaireCosium":
log(request.type);
sendResponse();
}
};