tl;dr: Addon SDK を使用して Firefox アドオンを作成しました。アドオンのコンパイルは、より大きなビルド システム (chrome 用にもコンパイルします) の 1 つのステップであるため、ビルド システムは xpi を手動でパッケージ化し、jpm を使用しません。ただし、独自のアドオンを作成するためのテンプレートとして、jpm パッケージ化されたアドオンのコンテンツを使用しました。これは、Firefox >=38 でのみ機能します。以前のバージョンで動作させる簡単な方法はありますか?
詳細:
そこで、次の bootstrap.js を含む xpi ファイルをパッケージ化します。
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const { utils: Cu } = Components;
const rootURI = __SCRIPT_URI_SPEC__.replace("bootstrap.js", "");
const COMMONJS_URI = "resource://gre/modules/commonjs";
const { require } = Cu.import(COMMONJS_URI + "/toolkit/require.js", {});
const { Bootstrap } = require(COMMONJS_URI + "/sdk/addon/bootstrap.js");
const { startup, shutdown, install, uninstall } = new Bootstrap(rootURI);
さらに、xpi には実際のコードを含む index.js が含まれています。この index.js は、sdk/page-mod のコンテンツ スクリプトを設定しています。
そのため、bootstrap.js では、起動/シャットダウン関数が Bootstrap オブジェクトにリンクされ、プラグインの有効化/無効化を処理します。
これは firefox 40 では正常に動作しますが、38 より前のバージョンでテストしたところ、bootstrap.js スクリプトを実行できないため、動作しません。
以前のバージョンの Firefox で動作させる簡単な方法はありますか? 残念ながら、これに関するドキュメントを見つけるのは非常に困難です。具体的には、アドオンの有効化/無効化を中断したくありません。つまり、ユーザーがアドオンを無効にした場合、page-mod も (Bootstrap クラスが行うように) 無効にする必要があり、プラグインを有効にするときは、次のようにする必要があります。再度有効にしました。