WebExtensions APIを使用して、Firefoxのアドオンにコンテキストメニューを追加しようとしています。私は、メニュー項目のクリックを聞き、コンテンツスクリプトにメッセージを送るバックグラウンドスクリプトが必要です。 これは私が持っているものです。コンテキストメニューが機能しないfirefoxアドオン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"]
}
]
}
背景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.");
}
);
}
コンテンツ-script.js
browser.runtime.onMessage.addListener(function(msg) {
console.log(msg);
});
メニュー項目が作成されていますが、メッセージは表示されません(Webコンソールとブラウザコンソールの両方をチェックしています)。 clickイベントが機能していないため、メッセージも送信されません。
私はMDNのthis exampleに従っていますが、これはうまくいきません。メニュー項目も作成されますが、何もしないので、APIとMDNで変更されたものがドキュメントを更新する必要はありませんでした。
アイデア?ありがとう。
ありがとうございます。問題はFirefoxのバージョンでした。私が最新バージョンを持っていると仮定するのはばかげた誤りでした。 Developer Editionに関しては、私の実際のアドオンはそれよりもはるかに複雑であり、DEは何かをしていました(私は以前のウェブ開発経験はないので、この「何か」が何であったかはわかりません)適切に動作します。私は今テストし、うまくいきます。 – guimarac