アドオンのロードとアンロードのリッスン
このチュートリアルに沿って学習するには、あらかじめ SDK をインストールし、cfx 入門を学習してください。
exports.main()
アドオンの main.js コードは、アドオンが読み込まれるとすぐに実行されます。main.js コードは、インストールされたとき、有効化されたとき、または Firefox が起動したときに読み込まれます。
アドオンが main() という関数をエクスポートする場合、main.js 全体が評価され、すべての最上位レベルの require() 文が実行されると(したがって、通常、すべての従属モジュールが読み込まれると)すぐにその関数が呼び出されます。
1 | exports.main = function (options, callbacks) {}; |
options は、アドオンのロードに使用したパラメータを示すオブジェクトです。
options.loadReason
options.loadReason は、アドオンが読み込まれた理由を示す以下のいずれかの文字列です。
install enable startup upgrade downgrade
options.staticArgs
cfx --static-args オプションを使用すると、任意のデータをプログラムに渡すことができます。
--static-args の値には、JSON 文字列を指定します。JSON によってエンコードされたオブジェクトは、options オブジェクトの staticArgs メンバーとなり、最初の引数としてプログラムの main 関数に渡されます。--static-args のデフォルトの値は 「{}」(空のオブジェクト)なので、options に staticArgs が存在するかどうかを確認する必要はありません。
例えば、main.js が以下のような場合、
1 2 3 | exports.main = function (options, callbacks) { console.log(options.staticArgs.foo);}; |
以下のように cfx を実行すると、
cfx run --static-args="{ ¥"foo¥": ¥"Hello from the command line¥" }"
コンソールに、以下のように表示されます。
info: Hello from the command line
--static-args オプションは、cfx run と cfx xpi のいずれによっても認識されます。cfx xpi で使用した場合、JSON が XPI の harness options を伴ってパッケージ化されるので、XPI 内のプログラムを実行するたびに使用されるようになります。
exports.onUnload()
アドオンが onUnload() という関数をエクスポートする場合、その関数はアドオンがアンロードされたときに呼び出されます。
1 | exports.onUnload = function (reason) {}; |
reason は、アドオンがアンロードされた理由を示す以下のいずれかの文字列です。
ただし、bug 627432 のバグのため、onUnload リスナーが uninstall を理由として呼び出されることはなく、disable でのみ呼び出されます。特にそのバグのコメント 12 を参照してください。
uninstall disable shutdown upgrade downgrade
exports.main() や exports.onUnload() の使用は必須ではありません。関数でラップして exports.main() に割り当てなくても、アドオンのコードを最上位レベルに置くだけで、同じように読み込まれます。ただしその場合、options 引数や callbacks 引数にアクセスすることはできません。