Chrome-Erweiterung sendMessage

Die Dokumentation hier scheint schrecklich: http://code.google.com/chrome/extensions/messaging.html

Ich will, dass mein Inhalt Skript, einfach um zu zeigen, eine pageIcon wenn es eine textarea-Komponente auf der Seite.

Meine content.js (mit jquery):

$('textarea').each(function() {
    chrome.extension.sendMessage({greeting: "hello"}, function(response) {
       console.log(response);
    });
});

Dann meine background.js hat diese:

chrome.extension.onMessage.addListener(

    function(request, sender, sendResponse) {
        chrome.pageAction.show(sender.tab.id);
    } 
});

Werden sollte unglaublich einfach. Wenn es ein Textfeld, zeigen Sie das Symbol.

Ich habe versucht, alle Arten von Variationen von Beispiel-code und nichts funktioniert. Alles, was ich jemals bekommen ist:

Port-Fehler: es Konnte keine Verbindung aufbauen. Empfängerseite nicht vorhanden ist.

in der Konsole.

Irgendwelche Ideen, wo ich bin mache ich falsch?

Die Dokumentation für Chrome-Erweiterungen ist in der Regel ausgezeichnet. Du hast nicht richtig gelesen der Dokumentation: Event-Listener für chrome.extension.onmessage erhalten nur einen parameter: Das Objekt mit request, sender, sendResponse. (seit Chrome 20, onRequest und sendRequest ersetzt wurden, mit onMessage und sendMessage). Dies ist wahrscheinlich nicht die Ursache des Fehlers allerdings. Sind Sie sicher, dass die onMessage Ereignis-listener angeschlossen ist (d.h. keine Fehler aufgetreten sind)?
Ändern onMessage, onRequest und versuchen Sie es erneut, wenn der Fehler weiterhin besteht, dann müssen Sie schauen in der Konsole log von hintergrund-Skript (in Erweiterungen -> Inspizieren Sichten: *** es sollte Ihr Skript, jusc lecken und gehen Sie auf die Konsole, schau auf die Fehlermeldung)

InformationsquelleAutor Tom B | 2012-07-17

Schreibe einen Kommentar