Ich versuche, ein Kontextmenü zu meinem Firefox Add-on mit der WebExtensions API hinzuzufügen. Ich brauche das Hintergrundskript, um einen Klick auf den Menüpunkt zu hören und eine Nachricht an das Inhaltsskript zu senden. Diese ist das, was ich habe:Kontextmenüs funktionieren nicht Firefox Add-on WebExtensions
manifest.json
{
"manifest_version": 2,
"name": "MyExt",
"version": "0.0.1",
"description": "Test extension",
"icons": {
"48": "icons/icon-48.png"
},
"applications": {
"gecko": {
"id": "[email protected]",
"strict_min_version": "45.0"
}
},
"permissions": ["contextMenus"],
"background": {
"scripts": ["background-scripts.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content-script.js"]
}
]
}
Hintergrund-scripts.js
chrome.contextMenus.create({
id: "clickme",
title: "Click me!",
contexts: ["all"]
});
browser.contextMenus.onClicked.addListener(function(info, tab) {
console.log("Hello World!");
sendMessage(info, tab);
});
function sendMessage(info, tab) {
chrome.tabs.query(
{active: true, currentWindow: true },
function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, "Test message from background script.");
}
);
}
inhalts script.js
browser.runtime.onMessage.addListener(function(msg) {
console.log(msg);
});
Der Menüeintrag wird erstellt, aber die Nachrichten werden nie angezeigt (ich überprüfe sowohl das Web als auch die Browserkonsole). Da das Klickereignis nicht funktioniert, wird die Nachricht auch nicht gesendet.
Ich folge this example von MDN, die nicht funktioniert. Es erstellt auch die Menüpunkte, aber sie tun nichts, was mich denken lässt, dass sich etwas in der API geändert hat und MDN sich nicht darum gekümmert hat, die Dokumentation zu aktualisieren.
Irgendwelche Ideen? Vielen Dank.
Vielen Dank. Das Problem war die Firefox-Version. Es war ein dummer Fehler anzunehmen, dass ich die neueste Version habe. In Bezug auf die Developer Edition ist mein tatsächliches Add-on viel komplexer als das und DE hat etwas getan (ich habe keine Erfahrung mit der Webentwicklung, daher weiß ich nicht, was dieses "Etwas" war), das das Add-On verhindert hat funktioniert richtig. Ich habe es jetzt getestet und es funktioniert gut. – guimarac