概要
main 関数と onUnload 関数を定義することで、 拡張のインストール・アンインストール・有効化・無効化・アップグレード・ダウングレード、 Firefox の起動・終了時に特定の処理を実行できる。 また、unload モジュールにより、アンロード時の処理を追加登録できる。 addon-kit の API のみを利用して拡張を開発するのであれば、アンロード時の処理は不要。
exports.main
main 関数は拡張ロード時に実行される関数である。 モジュール(main.js)の外部に公開するため、「exports.main = ...」という形で定義する。
exports.main = function (options, callbacks) { // 初期化処理 };
ロードの理由は options.loadReason で取得できる。 Jetpack SDK 0.5 以降では、引数を使わない場合には main 関数の定義を省略して main.js 内に直接初期化処理を記述してもよい。
loadReason | 意味 | 備考 |
---|---|---|
"install" | インストール | |
"enable" | 有効化 | |
"startup" | 起動 | |
"upgrade" | アップグレード | Firefox 3.x では "startup" |
"downgrade" | ダウングレード | Firefox 3.x では "startup" |
exports.onUnload
onUnload 関数は拡張アンロード時に実行される関数である。 第一引数でアンロードの理由が渡される。 addon-kit の API を使って登録したウィジェットやメニューは自動的に解放されるため、 通常は明示的に onUnload を定義する必要はない。
exports.onUnload = function (reason) { // 終了時処理 };
reason | 意味 | 備考 |
---|---|---|
"uninstall" | アンインストール | |
"disable" | 無効化 | |
"shutdown" | 終了 | |
"upgrade" | アップグレード | Firefox 3.x では "shutdown" |
"downgrade" | ダウングレード | Firefox 3.x では "shutdown" |
unload モジュール
自作の API を開発する場合には、unload モジュールを使って終了時の処理を登録する。 Jetpack 拡張は再起動不要で有効・無効を切り替えられるため、 拡張を無効にした場合にはすべての変更を元に戻さなければならない。 addon-kit の API を使わず Components.classes や Components.Interfaces に直接アクセスして動作環境を更新する場合、 unload モジュールの unload.ensure もしくは unload.when で変更を元に戻す処理を登録する。
unload.ensure(object) ではオブジェクトを登録する。 終了時に object.unload() が呼び出される。 同じ object を複数回登録しても最初の 1 回のみ実行されるよう、 登録時に object.unload() が更新される。 そのため、終了時ではなく ensure 呼び出し時までに object.unload() を定義しておく必要がある。
function Foo() { // 変更処理 require("unload").ensure(this); } Foo.prototype = { unload: function(reason){ // 復帰処理 } };
unload.when(callback) ではコールバック関数を登録する。 同じ callback を複数回登録すると複数回実行される。
function bar() { // 変更処理 require("unload").when(function(reason){ // 復帰処理 }); }
それぞれ、コールバックの第一引数でアンロード理由を取得できる。値は exports.onUnload と同一。
関連リンク
- https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/tutorials/load-and-unload.html
- https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/api-utils/unload.html
更新履歴
- 2012/05/19: リンク先更新。
- 2011/06/22: リンク先更新。
- 2010/12/10: リンク先更新。
- 2010/10/25: SDK 0.9 での変更にあわせ、「jetpack-core」を「addon-kit」に更新。
- 2010/07/04: 初版作成。