「prefs.js設定の読み書き」の編集履歴(バックアップ)一覧はこちら
prefs.js設定の読み書き - (2014/01/23 (木) 13:37:58) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
#contents()
*XPCOMを直接使う
基本はこれ。よく使われている。
-[[Preferences - Code snippets | MDN>https://developer.mozilla.org/en-US/docs/Code_snippets/Preferences]]
-[[nsIPrefService - XPCOM Interface Reference | MDN>https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIPrefService]]
-[[nsIPrefBranch - XPCOM Interface Reference | MDN>https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIPrefBranch]]
**ルートブランチを取得
#highlight(javascript){
var rootBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); }
標準のServices.jsmを使う方が省エネ
#highlight(javascript){
Components.utils.import("resource://gre/modules/Services.jsm");
var rootBranch = Services.prefs}
**特定のブランチを取得
#highlight(javascript){
var prefBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.sample.");}
**設定を取得
設定値が存在しなかったり、型が違った場合は''例外エラーが発生する事に注意''。
***単純型(真偽、文字、整数)
#highlight(javascript){
var bool = prefs.getBoolPref("samplevalue"); // 真偽値型
var string = prefs.getCharPref("samplevalue"); // 文字列(ASCII)型
var int = prefs.getIntPref("samplevalue"); // 整数値型}
***複合型(ユニコード文字、propertiesファイル、パス)
''Unicode文字列''
#highlight(javascript){
var Ci = Components.interfaces;
var u_str = prefs.getComplexValue("samplevalue", Ci.nsISupportsString).data;}
''ローカライズ文字列''
propertiesファイルパスが指定されていた場合はそのファイルから読み取る。
それ以外はUnicode文字列と同じ動作。
-chrome://sample/locale/sample.properties
extensions.sample.samplevalue=サンプルUnicode文字列
-pref.jsの規定値に設定
pref("extensions.sample.samplevalue", "chrome://sample/locale/sample.properties");
-javascript
#highlight(javascript){
var Ci = Components.interfaces;
var locale = prefs.getComplexValue("samplevalue", Ci.nsIPrefLocalizedString).data;}
''パス''
-[[File I/O - Code snippets | MDN>https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O]]
**設定を保存
***単純型(真偽、文字、整数)
#highlight(javascript){
prefs.setBoolPref("samplevalue", true); // 真偽値型
prefs.setCharPref("samplevalue", "saple string"); // 文字列(ASCII)型
prefs.setIntPref("samplevalue", 10); // 整数値型}
getIntPrefの値はC言語のlong型なので、-2,147,483,648~2,147,483,647の間の数値という制限がある。この範囲外の数値を扱う場合は文字列型として扱う必要がある。
***複合型(ユニコード文字、propertiesファイルの上書き、パス)
''Unicode文字列''
#highlight(javascript){
var Cc = Components.classes;
var Ci = Components.interfaces;
var u_str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
u_str.data = 'サンプルUnicode文字列';
prefs.setComplexValue("samplevalue", Ci.nsISupportsString, u_str);}
''ローカライズ文字列''
Unicode文字列とまったく一緒。
#highlight(javascript){
var Cc = Components.classes;
var Ci = Components.interfaces;
var locale = Cc["@mozilla.org/pref-localizedstring;1"].createInstance(Ci.nsIPrefLocalizedString);
locale.data = 'サンプルローカライズ文字列';
prefs.setComplexValue("samplevalue", Ci.nsIPrefLocalizedString, locale);}
''パス''
-[[File I/O - Code snippets | MDN>https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O]]
*JavaScriptコードモジュールを使用
1,2個の設定をちょっと読んだり書いたりするのに便利。
XPCOMを直接使うのとは使い勝手が若干違うので少し戸惑う。
-[[Labs/JS Modules - MozillaWiki>https://wiki.mozilla.org/Labs/JS_Modules#Preferences]]
**特定のブランチを設定
#highlight(linenumber,javascript){
Components.utils.import("resource://gre/modules/services-common/preferences.js");
var prefBranch = new Preferences("extensions.sample.");}
**設定値を取得
#highlight(linenumber,javascript){
Components.utils.import("resource://gre/modules/services-common/preferences.js");
var value = Preferences.get("extensions.sample.samplevalue");}
*FUELを使用
XPCOMとは使い勝手がかなり違うので微妙かも。DOMっぽい操作感なので慣れれば良いのか?
-[[Handling Preferences - XUL School Tutorial | MDN>https://developer.mozilla.org/ja/docs/XUL_School/Handling_Preferences]]
#contents()
*XPCOMを直接使う
基本はこれ。よく使われている。
-[[Preferences - Code snippets | MDN>https://developer.mozilla.org/en-US/docs/Code_snippets/Preferences]]
-[[nsIPrefService - XPCOM Interface Reference | MDN>https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIPrefService]]
-[[nsIPrefBranch - XPCOM Interface Reference | MDN>https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIPrefBranch]]
**ルートブランチを取得
#highlight(javascript){
Components.utils.import("resource://gre/modules/Services.jsm");
var rootBranch = Services.prefs}
**特定のブランチを取得
#highlight(javascript){
Components.utils.import("resource://gre/modules/Services.jsm");
var prefBranch = Services.prefs.getBranch("extensions.sample.");}
**設定を取得
設定値が存在しなかったり、型が違った場合は''例外エラーが発生する事に注意''。
***単純型(真偽、文字、整数)
#highlight(javascript){
var bool = prefs.getBoolPref("samplevalue"); // 真偽値型
var string = prefs.getCharPref("samplevalue"); // 文字列(ASCII)型
var int = prefs.getIntPref("samplevalue"); // 整数値型}
***複合型(ユニコード文字、propertiesファイル、パス)
''Unicode文字列''
#highlight(javascript){
var Ci = Components.interfaces;
var u_str = prefs.getComplexValue("samplevalue", Ci.nsISupportsString).data;}
''ローカライズ文字列''
propertiesファイルパスが指定されていた場合はそのファイルから読み取る。
それ以外はUnicode文字列と同じ動作。
-chrome://sample/locale/sample.properties
extensions.sample.samplevalue=サンプルUnicode文字列
-pref.jsの規定値に設定
pref("extensions.sample.samplevalue", "chrome://sample/locale/sample.properties");
-javascript
#highlight(javascript){
var Ci = Components.interfaces;
var locale = prefs.getComplexValue("samplevalue", Ci.nsIPrefLocalizedString).data;}
''パス''
-[[File I/O - Code snippets | MDN>https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O]]
**設定を保存
***単純型(真偽、文字、整数)
#highlight(javascript){
prefs.setBoolPref("samplevalue", true); // 真偽値型
prefs.setCharPref("samplevalue", "saple string"); // 文字列(ASCII)型
prefs.setIntPref("samplevalue", 10); // 整数値型}
getIntPrefの値はC言語のlong型なので、-2,147,483,648~2,147,483,647の間の数値という制限がある。この範囲外の数値を扱う場合は文字列型として扱う必要がある。
***複合型(ユニコード文字、propertiesファイルの上書き、パス)
''Unicode文字列''
#highlight(javascript){
var Cc = Components.classes;
var Ci = Components.interfaces;
var u_str = Cc["@mozilla.org/supports-string;1"].createInstance(Ci.nsISupportsString);
u_str.data = 'サンプルUnicode文字列';
prefs.setComplexValue("samplevalue", Ci.nsISupportsString, u_str);}
''ローカライズ文字列''
Unicode文字列とまったく一緒。
#highlight(javascript){
var Cc = Components.classes;
var Ci = Components.interfaces;
var locale = Cc["@mozilla.org/pref-localizedstring;1"].createInstance(Ci.nsIPrefLocalizedString);
locale.data = 'サンプルローカライズ文字列';
prefs.setComplexValue("samplevalue", Ci.nsIPrefLocalizedString, locale);}
''パス''
-[[File I/O - Code snippets | MDN>https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O]]
*JavaScriptコードモジュールを使用
1,2個の設定をちょっと読んだり書いたりするのに便利。
XPCOMを直接使うのとは使い勝手が若干違うので少し戸惑う。
-[[Labs/JS Modules - MozillaWiki>https://wiki.mozilla.org/Labs/JS_Modules#Preferences]]
**特定のブランチを設定
#highlight(linenumber,javascript){
Components.utils.import("resource://gre/modules/services-common/preferences.js");
var prefBranch = new Preferences("extensions.sample.");}
**設定値を取得
#highlight(linenumber,javascript){
Components.utils.import("resource://gre/modules/services-common/preferences.js");
var value = Preferences.get("extensions.sample.samplevalue");}
*FUELを使用
XPCOMとは使い勝手がかなり違うので微妙かも。DOMっぽい操作感なので慣れれば良いのか?
-[[Handling Preferences - XUL School Tutorial | MDN>https://developer.mozilla.org/ja/docs/XUL_School/Handling_Preferences]]