📄

Chrome拡張のManifest v3でpage_actionのコンテキストメニューが出ないとき

2021/12/18に公開

TLDR

  • Chrome拡張のManifest v3で browser_actionpage_actionaction に統合された
  • chrome.contextMenus.create()contexts パラメータも "action" にしないといけない。
  • v2では動いていた古いパラメータのままだと、v3ではエラーも何もなくただ表示されなくなるので注意。

実際のコード

Chrome拡張機能の実装の勉強のために個人的に作ってるやつで、Manifest v3対応して安心していたら、ブラウザアクションボタンのコンテキストメニュー内に追加していたメニューが出なくなっていた。
特にエラーが起きたりもしないので、全然気付いていなかった。

次の画像のようにメニューを2つ追加していたはずなのが、まるっと消えていた。
ブラウザアクションボタンのコンテキストメニューの表示イメージ

Chrome拡張のManifest v3では browser_actionpage_actionaction に統合されており、manifest.jsonの書き方や chrome.pageAction APIまわりを変える必要がある。
https://developer.chrome.com/docs/extensions/mv3/intro/mv3-migration/#action-api-unification

それだけでなく、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"],
   });
 });

https://github.com/mstssk/pixiv_bookmark_helper/commit/aaa8e84796d37a391110668b1d4bdf1cdb90c3f0

Discussion