📄
Chrome拡張のManifest v3でpage_actionのコンテキストメニューが出ないとき
TLDR
- Chrome拡張のManifest v3で
browser_action
とpage_action
がaction
に統合された -
chrome.contextMenus.create()
のcontexts
パラメータも"action"
にしないといけない。 - v2では動いていた古いパラメータのままだと、v3ではエラーも何もなくただ表示されなくなるので注意。
実際のコード
Chrome拡張機能の実装の勉強のために個人的に作ってるやつで、Manifest v3対応して安心していたら、ブラウザアクションボタンのコンテキストメニュー内に追加していたメニューが出なくなっていた。
特にエラーが起きたりもしないので、全然気付いていなかった。
次の画像のようにメニューを2つ追加していたはずなのが、まるっと消えていた。
Chrome拡張のManifest v3では browser_action
と page_action
が action
に統合されており、manifest.jsonの書き方や chrome.pageAction
APIまわりを変える必要がある。
それだけでなく、contexts: "page_action"
として chrome.contextMenus.create
を呼んでいるところも、 contexts: "action"
に変える必要があった。
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: "bookmark_illust",
title: "イラスト・マンガのブックマークを開く",
- contexts: ["page_action"],
+ contexts: ["action"],
});
chrome.contextMenus.create({
id: "bookmark_novel",
title: "小説のブックマークを開く",
- contexts: ["page_action"],
+ contexts: ["action"],
});
});
Discussion