我正在尝试在Firefox扩展程序中保存少量持久数据。
所以,我试图像这样使用nsIPrefBranch
:
var db = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
if(db.getCharPref('epoch')){ ///do something.. }
但它似乎没有用,我收到了这个错误:
“组件返回失败代码:0x8000ffff(NS_ERROR_UNEXPECTED) [nsIPrefBranch.getCharPref]“
有人可以告诉我我做错了吗?
答案 0 :(得分:2)
没有名为“epoch”的偏好 - 这就是这条消息告诉你的。您必须先设置此首选项,然后才能使getCharPref()
成功。这就是扩展通常将对nsIPrefBranch
的调用封装到try .. catch
块中的原因 - 预计会出现错误。
另一方面:首选项是一个共享空间(在about:config
下查看它们)。您应该明确首选项属于您的扩展程序,并确保它不会与其他扩展程序或浏览器的首选项冲突。换句话说,使用类似“extensions.myExtension.epoch”而不是“epoch”的东西。