2012-02-02 82 views
1

我試圖在Firefox擴展中保存少量持久數據。試圖使用nsIPrefBranch在Firefox擴展中存儲數據給NS_ERROR_UNEXPECTED

所以,我試圖用nsIPrefBranch這樣的:

var db = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); 
if(db.getCharPref('epoch')){ ///do something.. } 

,但它似乎沒有工作,我得到這個錯誤:

"Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getCharPref]"

有人可以告訴我做錯了什麼?

+0

感謝鮑勃:)(拼寫更正..) – jsbuster 2012-02-02 21:58:08

回答

2

有沒有優先選擇稱爲「時代」 - 這就是這個消息告訴你。您必須先設置此首選項,然後才能預期getCharPref()成功。這就是爲什麼分機通常將呼叫nsIPrefBranch換成try .. catch塊的原因 - 預計會出現錯誤。

在不同的說明:首選項是一個共享空間(看看他們在about:config下)。您應該明確指出一個偏好屬於您的擴展,並確保它不會與其他擴展或瀏覽器的偏好衝突。換句話說,使用「extensions.myExtension.epoch」而不是「epoch」。

+0

是的,你是對的!感謝弗拉基米爾! – jsbuster 2012-02-03 10:27:04