Je sais que cette question a été posée à plusieurs reprises de différentes manières, mais j'ai essayé de parcourir toutes les réponses (j'espère que je n'ai manqué personne) et aucune d'elles n'a fonctionné pour moi.
Voici le code de mon extension:
manifeste:
{
"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!");
}
});
Les deux alertes de la page d'arrière-plan fonctionnent, contrairement à celle de content_script.
message du journal de la console: Erreur de port: impossible d'établir la connexion. La fin de réception n'existe pas.
Où est ma faute?
chrome.tabs.sendMessage()
pour envoyer des messages aux scripts de contenu, paschrome.extension.sendMessage()
.