Firefoxの拡張機能をChromeに移植してみる。
もともとFirefox用の拡張機能を使用するときにAPIがChromeでサポートされているものに限定していた。
ただ、Storageの使用とオプション設定が動作しなかったので、該当部分を削除しただけで動いた。
現在、個人用に利用中だが、類似の機能は多く公開されているので、あえて公開するかは思案中。
StorageやTabなどのAPIについてはFirefoxとChromeの違いを吸収する簡単なアダプタを作成するだけでその他のコードは共用できた。
オプション設定は、manifest.jsonの書き方が誤っていたためで、ChromeでもFirefox同様なオプション設定が可能になった。
ということで、固有の機能を利用していない、あるいは制限を超えない範囲では、思っていた以上に移植がしやすい。
Firefoxでは公開しないと常用が面倒。Chromeでは公開せずとも常用できる。Chrome中心の利用にかようかと思ったら・・・
マニュフェストが変更になってしまっていたり、コードもエラーを起こすようになってしまった。もう少し調べてみる。
かきかえないとだめみたいですね...
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/getBackgroundPage
注: Firefoxでは、このメソッドはプライベートブラウジングモードでは使用できません。常に。を返しますnull。詳細については、バグ1329304を参照してください。
Chromeでは、この方法は永続的な背景ページでのみ使用できます。これはManifest V3では使用できないため、ManifestV2の使用を検討してください。詳細はこちらをご覧ください。
上記の両方のシナリオで正しく機能するruntime.sendMessage()またはの使用を検討してください。runtime.connect()
https://github.com/GoogleChrome/chrome-extensions-samples
Chrome/Edgeはマニフェスト V2 のサポート タイムライン (現在は 2024 年 1 月)と延長されたようだが、Firefoxも対応してきており、V3に移行したほうがよい状況になってきたので、Firefox側でV3対応しChromeに移植した。バックグラウンドスクリプトは1ファイルという制約はFirefox側のV3対応で対応済だったので、(簡単な)アダプタ内でブラウザの相違点は吸収できた。
少しはまったところもあるが以下のサイトが役に立った。
https://memo.furyutei.com/entry/20221002/1664638665