10
Próbuję wysłać wiadomości między contentscript
i background script
jak poniżejDwukierunkowa komunikacja wraca błąd w Chrome Extension
ContentScript.js
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;
}
});
Błąd
Nie można wysłać odpowiedzi: Program nasłuchujący chrome.runtime.onMessage musi zwrócić wartość true, aby wysłać odpowiedź po odsłuchaniu przez odbiorcę:
Jak mogę rozwiązać ten problem?
Czy próbowałeś dodać "return true" w swoim drugim "przypadku", tak jak sugeruje komunikat o błędzie? – apsillers
@appillers Tak, to działa dobrze. Musiałem umieścić zwrot w dwóch miejscach, ale umieściłem tylko jedno miejsce. To był problem. Dzięki za wskazanie. Czy mógłbyś to opublikować jako odpowiedź, abym mógł ją zaakceptować. – Exception