📄
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