2

Firefox アドオンで localStorage を次のように使用しています。

var ioService = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService);
var scriptSecManager = Components.classes['@mozilla.org/scriptsecuritymanager;1'].getService(Components.interfaces.nsIScriptSecurityManager);
var domStorageManager = Components.classes['@mozilla.org/dom/storagemanager;1'].getService(Components.interfaces.nsIDOMStorageManager);
var uri = ioService.newURI('http://example.com/addon/', null, null);
var principal = scriptSecManager.getNoAppCodebasePrincipal ? scriptSecManager.getNoAppCodebasePrincipal(uri) : scriptSecManager.getCodebasePrincipal(uri);
var localStorage = domStorageManager.getLocalStorageForPrincipal(principal, '');

すべて正常に動作しますが、ユーザーが「オフライン データ」ストレージを削除すると、ストレージがクリアされます。どうすれば回避できますか?

4

1 に答える 1

0

設定サービスを使用して、ユーザーのプロファイルにデータを保存します。

var prefService = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService),
    prefs = prefService.getBranch("extensions.YOUREXTENSIONABBREVIATIONHERE.");

var stringValue = "My Name",
    booleanValue = true,
    numberValue = 55;

prefs.setCharPref("stringParam", stringValue);
prefs.setBoolPref("booleanParam", booleanValue);
prefs.setCharPref("numberParam", ''+numberValue);

prefService.savePrefFile(null);   // only to force an immediate save

stringValue = prefs.getCharPref("stringParam");
booleanValue = prefs.getBoolPref("booleanParam");
numberValue = parseInt(prefs.getCharPref("numberParam"), 10);

defaults.jsファイルをdefaults/Preferencesフォルダーに置き、新しいユーザーの設定を初期化します。存在しないプリファレンスを取得しようとするとエラーが発生し、存在するかどうかを確認する方法がありません。

ここを見て:

https://developer.mozilla.org/en-US/docs/Adding_preferences_to_an_extension

于 2013-02-23T07:53:55.160 に答える