Ich weiß, dass die Frage wurde wiederholt auf verschiedene Arten gefragt, aber ich habe versucht, alle Antworten durchzugehen (hoffentlich habe ich niemanden vermisst) und keiner von ihnen hat für mich gearbeitet.Chrome-Erweiterung: sendMessage von Hintergrund zu Inhalt Skript funktioniert nicht
Hier ist der Code meiner Erweiterung:
manifestieren:
{
"name": "test",
"version": "1.1",
"background":
{
"scripts": ["contextMenus.js"]
},
"permissions": ["tabs", "<all_urls>", "contextMenus"],
"content_scripts" : [
{
"matches" : [ "http://*/*" ],
"js": ["jquery-1.8.3.js", "jquery-ui.js"],
"css": [ "jquery-ui.css" ],
"js": ["openDialog.js"]
}
],
"manifest_version": 2
}
contextMenus.js
function onClickHandler(info, tab) {
if (info.menuItemId == "line1"){
alert("You have selected: " + info.selectionText);
chrome.extension.sendMessage({action:'open_dialog_box'}, function(){});
alert("Req sent?");
}
}
chrome.contextMenus.onClicked.addListener(onClickHandler);
chrome.runtime.onInstalled.addListener(function() {
chrome.contextMenus.create({"id": "line1", "type": "normal", "title": "I'm line 1", "contexts":["selection"]});
});
openDialog.js
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
if (msg.action == 'open_dialog_box') {
alert("Message recieved!");
}
});
Die beiden Warnungen der Hintergrundseite funktionieren, während die von content_script nicht funktioniert.
Meldung des Konsolenprotokolls: Portfehler: Verbindung konnte nicht hergestellt werden. Empfangsende existiert nicht.
Wo ist meine Schuld?
Sie sollten 'chrome.tabs.sendMessage()' verwenden, um Nachrichten an Inhaltsskripts zu senden, nicht an 'chrome.extension.sendMessage()'. – apsillers