Ich schreibe ein Chrome-Plugin mit einem Inhaltsskript und einem Hintergrundskript, und ich versuche, die beiden zu kommunizieren.chrome.runtime.sendMessage funktioniert nicht wie erwartet
In meinem Content-Skript, ich
tuechrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
und in meinem Hintergrund Skript, ich
tuechrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
}
);
Mein Manifest sieht wie folgt aus:
{
"manifest_version": 2,
"name": "Tesing Phase",
"version": "1.0",
"background": {
"persistent": false,
"scripts": ["bgscript.js"]
},
"content_scripts": [{
"js": ["contentscript.js"],
"all_frames": true,
"run_at" : "document_start",
"matches": ["*://*/*"]
}],
"web_accessible_resources": ["script.js"]
}
Als ich Führen Sie mein Plugin, ich bekomme den folgenden Fehler:
Uncaught TypeError: Object #<Object> has no method 'sendMessage'
Ich versuchte Protokollierung chrome.runtime
, und es gab keine Methode sendMessage
. Ich verwende Version 25.0 von Chromium auf Ubuntu. Ich versuchte auch mit sendRequest
, aber es sagte, es ist abgeschrieben und sendMessage
sollte verwendet werden.
Kann mir jemand zeigen, was ich hier vermisse? Gibt es irgendwelche Berechtigungen, damit dies funktioniert?
Dank lot.It mit gearbeitet chrome.extension.I dünn: Methoden auf dem
chrome.runtime
Objekt können Sie den folgenden Ansatz statt verwenden k Diese Info fehlt in den Google Chrome Dev-Seiten. –Das sieht gut aus, aber ist diese Methode immer noch gültig für Chromversionen bis 31? oder müsste es angepasst werden? und weiß jemand, ob die alten veralteten Nachrichtenübermittlungsmethoden vollständig aus der neuesten Version von Chrome – user280109
@ user280109 gelöscht wurden. Es ist immer noch gültig. Man könnte aber auch 'chrome.runtime' ohne Kompatibilitätsebenen verwenden, da kaum jemand Chrome 25 verwendet - dank Google's Auto-Updater. –