読者です 読者をやめる 読者になる 読者になる

Firefox拡張機能で設定値を読み書きする (その2)

Firefox JavaScript 連載

ここまでのあらすじ

Firefox拡張機能で、その拡張独自の設定ができるようにしていた。前回で、デフォルト値を設定してその値がabout:configに反映されていることを確認した。

今回はJavaScriptコードから設定値の取得/変更ができるようにする。参考にしたページは以下(前回と同じ)。
Preferences - MDC

ソースコード

コードのサンプルは以下の通り。

// content/bottomErrorConsole.js
// 拡張機能の本体(の一部)

// "extensions.bottomerrorconsole" ブランチを取得する
var prefBranch = Components.classes["@mozilla.org/preferences-service;1"].
    getService(Components.interfaces.nsIPrefService).
    getBranch("extensions.bottomerrorconsole.");

// 値の取得
var h = prefBranch.getIntPref("default_height");
// 取得した値をエラーコンソールに出力する
Application.console.log("default_height = " + h);

// 値の設定
prefBranch.setCharPref("startup_mode", "close");

まずvar prefBranch = ... という文で設定ツリーの一部を取得している。このprefBranchというオブジェクトから"extensions.bottomerrorconsole."という名前で始まる設定値の取得/設定ができるようになる。

その下は設定値を取得する例だ。このgetIntPrefはその名の通り整数値を取得するメソッドで、この場合は"extensions.bottomerrorconsole.default_height"という名前の整数型の設定値が取得できる。

設定値は「文字列」、「整数値」、「真偽値」という3つの型があって(前回調べた)、それに対応してgetCharPref, getIntPref, getBoolPrefという3種類のメソッドを使い分けなければいけない。型を意識するのはJavaScript的に気持ち悪いけど、おとなしく言われた通りにしておく。

その下は値を設定する例で、単純にgetをsetに代えるだけでOKだ。もちろん、3つの型に対応して3つのsetメソッドがある。

注意として、getBranchの引数"extensions.bottomerrorconsole."の最後の"."は重要だ。もし"."が無かったら、その下のgetIntPrefでは"extensions.bottomerrorconsoledefault_height"という名前の設定を取得することになる。勝手に"."を補ってくれたりしないので、自分で指定するようにする。

動作確認

以下のようにデフォルト値を設定して、動作確認してみた。

// defaults/preferences/bottomErrorConsole.js
// この拡張機能のデフォルト設定
pref("extensions.bottomerrorconsole.default_height", 400); // この値を取得する
pref("extensions.bottomerrorconsole.startup_mode", "open"); // この値を上書きする
値の取得(エラーコンソールで確認)


デフォルト値が取得できている。

値の設定(about:configで確認)


デフォルト値がcloseで上書きされている。

これで設定値を扱えるようになった。

< 前へ

この連載の一覧