Chrome-Erweiterung sendMessage-Fehler aus content-Skript, um html-hintergrund
Ich gerade aktualisiert meine chrome-Erweiterung zu json in der version 2 und bin versucht, meine Verlängerung wieder zu arbeiten. Das problem ist sendRequest war abgeschrieben entlang des Weges. Also ich kopiere den code aus https://developer.chrome.com/extensions/messaging.html in mein script und ändern Sie es mit meinen eigenen Variablennamen, und es funktioniert nicht.
Also dann ich gehe zurück und in den ursprünglichen code und es funktioniert immer noch nicht. Ich habe gelesen, mehrere Fragen, die ähnlich sind [und hoffentlich wird nicht geschlossen, als ein Duplikat, weil keiner von Ihnen waren die gleichen wie meine Lage].
manifestieren.json:
{
"background": {
"page": "background.html"
},
... ... ...
"content_scripts": [ {
"css": [ "style.css" ],
"js": [ "jq.js", "script.js" ],
"matches": [ "http://*.craigslist.org/*/*.htm*" ]
} ],
... ... ...
"permissions": [ "tabs", "http://*.craigslist.org/*/*.htm*" ],
"manifest_version": 2,
"update_url": "http://clients2.google.com/service/update2/crx",
"version": "3.0"
}
background.html:
<html>
<script type='text/javascript'>
chrome.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"});
});
});
</script>
</html>
script.js:
chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
console.log(response.farewell);
});
Nun ich betreibe eine Seite [auf craigslist], und gehen Sie zu der Konsole und das ist der Fehler:
Port error: Could not establish connection. Receiving end does not exist.
TypeError: Cannot read property 'farewell' of undefined
at chrome-extension://dhmjefbokfkjpdbigkadjpgjeflchgea/script.js:9:23
Ich Chrome Beta auf Ubuntu 12.10 64-bit (Google Chrome: 27.0.1453.15 (Offizieller Build 191758) beta)
möglich, Duplikat der Port Fehler beim ändern der chrome-Erweiterung von manifest v1, v2
InformationsquelleAutor Matt | 2013-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie das senden von Nachrichten von Ihrem hintergrund und Ihren Inhalt Skript, aber nicht versuchen, zu erhalten Sie alle. Versuchen Sie hören für die Nachrichten, die in einem oder beiden Orten. Auch inline-code ist gegen die CSP so bewegen Sie alle in eine externe Datei.
Beispiel:
manifestieren.json
background.js
script.js
Auch
chrome.tabs.getSelected()
wurde als veraltet markiert, so verwenden Siechrome.tabs.query()
statt.Ich war, geht aus den Google-code. lol. Ich verlinkte direkt zum es. Eh Nein, lassen Sie mich versuchen, die... auf den zweiten Gedanken, ich bin mir auch nicht sicher, wie man einen hintergrund JS. Es sei denn, du meinst die content-script. Ich habe bereits dass. Das problem, der content-Skripte zugreifen kann localStorage, also mit hintergrund-HTML Zugriff auf localStorage und senden Sie es über eine Nachricht.
Ohh.. ok ich werde versuchen, dass.
yay! Diesem Vorschlag gearbeitet. können Sie es hinzufügen, um die ursprüngliche Antwort? dann werde ich es annehmen
Und klar zu sein, was es zu arbeiten war "back.js" und das hinzufügen des js-code in background.html meine derzeitige Antwort. Dann habe ich src="back.js" background.html vielen Dank nochmal, das war wirklich halten mich auf.
InformationsquelleAutor BeardFist
hintergrund Skript
Inhalt Skript
Dein code sendet msg von bg zu contentscript statt Umgekehrt
InformationsquelleAutor Aleksandr Golovatyi