2012-11-20 50 views
2

我使用localStorage的我Firefox插件以這樣的方式 保持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, ''); 

一切工作正常,但是當用戶刪除「離線數據」存儲已清除。我該如何解決它?

+0

有沒有阻止你使用專門的[存儲API]一個具體的理由(https://developer.mozilla.org/en-US/docs/Storage) ? – unclenorton

+0

我不需要像SQL查詢這樣複雜的東西,我只需要鍵/值存儲。 – KAdot

+0

你確定這個原因嗎? [通過工具 - >選項 - >高級 - >網絡 - >脫機數據 - >立即清除DOM存儲不清除。](https://developer.mozilla.org/zh-CN/docs/DOM/Storage# Storage_location_and_clearing_the_data) – paa

回答

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文件在默認設置/首選項文件夾,並初始化首新用戶。如果您嘗試檢索不存在的首選項,並且無法檢查它是否存在,則會出現錯誤。

看看這裏:

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

+0

我需要存儲大量數據,所以Preferences Service不適合我。 – KAdot

+0

在這種情況下,創建一個SQLite數據庫並從那裏存儲和檢索你的值。 https://developer.mozilla.org/en-US/docs/Storage – swmcdonnell

相關問題