2013-05-07 53 views
10

我试图contentscriptbackground script之间发送消息像ContentScript.js双向通信在Chrome返回错误扩展

chrome.extension.sendMessage({ type : "some" }, function(response) { 
    anotherFunction(response.data); 
    return true;   
}); 
function anotherFunction(data){ 
    // Some code here 
    chrome.extension.sendMessage({ type : "someOther" }, function(response) { 
     console.log(response.data); // Failed to get Response 
     return true;  
    }); 
} 

下面

Background.js

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) { 
    switch(request.type){ 
     case "some": 
      sendResponse({ data : "Some Response" }); 
      return true; 
     break; 
     case "someOther": 
      // Here I am getting an error. Error is given below 
      sendResponse({ data : "Some Response" }); 
     break; 
    } 
}); 

错误
无法发送回应:如果你想监听器返回

后,我怎样才能解决这个问题发送响应的chrome.runtime.onMessage监听器必须返回true?

+2

你有没有尝试在你的第二个'case'中添加'return true'就像错误信息所示? – apsillers 2013-05-07 13:00:56

+1

@apsillers是的,它工作正常。我不得不在两个地方回归真实,但我只有一个地方。这是问题所在。感谢您指出。能否请您将它作为答案发布,以便我可以接受它。 – Exception 2013-05-07 13:01:45

回答

20

这应该修复它:

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) { 
    ... 
    return true; //Important 
}); 

你的情况,你忘了添加第二case回报。