2017-06-14 5 views
0

Ich habe gerade angefangen, mit Chrome-Erweiterungen zu spielen.Chrome-Erweiterung - Ergebnis ist immer Null

In meinem content.js Ich habe folgende

chrome.runtime.sendMessage("", function(response){ 
    //some logic 
}); 

Und in background.js

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) { 
    sendResponse(someFunction); 
    return true; 
}); 

function someFunction(para) { 
    //logic 
} 

Die Frage ist, ist die response in content.js immer undefiniert ... Die ähnlichen Beiträge auf dieser Seite ist in der Regel wegen asynchronen Aufrufen wie Ajax, aber ich mache nichts asynchron und ich gebe wahr, die nach den Dokumenten die Methode zurückgibt ... kann ich nur meine Logik annehmen ist etwas wie rückwärts?

Was habe ich falsch gemacht?

+0

Entfernen Sie die Klammern - es ist nur: 'AddToBody Eltern '. Oder verwenden Sie 'Call' wie folgt:' Call AddToBody (Eltern) ' – Rory

Antwort

2

Sie können keine Funktion ("someFunction") als Antwort senden. Das Antwortobjekt muss serialisierbar sein.

+0

Dies ist die Antwort. Ich verstehe jetzt. Ich kann keine Funktion zurückgeben ... Ich hatte gehofft, die Antwort als Rückruf zu verwenden, aber das scheint nicht möglich zu sein. – MyDaftQuestions

+0

ich bin nicht sicher, ich folge deiner Idee. Ihre Funktion ruft bereits zurück. Warum brauchen Sie einen Rückruf? Deshalb verwenden Sie Messaging. –