Ich weiß, dass diese Frage wiederholt auf unterschiedliche Weise gestellt wurde, aber ich habe versucht, alle Antworten durchzugehen (hoffentlich habe ich niemanden vermisst), und keine davon hat für mich funktioniert.
Hier ist der Code meiner Erweiterung:
Manifest:
{
"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, die des content_script nicht.
Meldung des Konsolenprotokolls: Portfehler: Verbindung konnte nicht hergestellt werden. Empfangsende existiert nicht.
Wo ist meine Schuld?
chrome.tabs.sendMessage()
, um Nachrichten an Inhaltsskripte zu senden, nichtchrome.extension.sendMessage()
.