公式のガイドに従ってやればよい
Migrating to Manifest V3 - Chrome Developers
- background pages が Service Worker に置き換えられた
- 各
chrome
API の Promise 化 - リモートのコードが実行できなくなる
- browser_action と page_action の統合
executeScript
の変更
あたりが大きい
cocopy の場合
browser_action と page_action の統合
Action API unification - Migrating to Manifest V3 - Chrome Developers
上記のように manifest を修正し、chrome.browserAction
などの呼び出しを chrome.action
に置換すれば良い。
ハマったのはキーボードショートカットを定義する commands
の方も undocumented に変更されていた点。_execute_browser_action
などを _execute_action
に置き換える必要がある。
web_accessible_resources の指定が変わった
Web-accesible resources - Migrating to Manifest V3 - Chrome Developers
外部から拡張の options.html
にクエリパラメータを付けてリンクしたい。
matches
以下にリンク元の origin を書いておけばリンクが開けるようになる。でも任意の origin からリンクすることはできなくなっていそう。
"web_accessible_resources": [{ "resources": [ "options.html" ], "matches": [ "https://github.com/*" ] }]
その他
ユーザ入力を js として解釈するのがコア機能なので、Remotely hosted code - Migrating to Manifest V3 - Chrome Developers の変更で詰むかと思ったけど、以前より sandbox で eval するようにしていたので何もする必要なかった。
ページタイトルや HTML の取得は、動的にコードを変更する必要がないので素直に function にして chrome.scripting.executeScript(...)
する。scripting
の permission も要求する。