尝试使用nsIPrefBranch在Firefox扩展上存储数据会产生NS_ERROR_UNEXPECTED

时间:2012-02-02 21:20:44

标签: javascript firefox-addon

我正在尝试在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]“

有人可以告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

没有名为“epoch”的偏好 - 这就是这条消息告诉你的。您必须先设置此首选项,然后才能使getCharPref()成功。这就是扩展通常将对nsIPrefBranch的调用封装到try .. catch块中的原因 - 预计会出现错误。

另一方面:首选项是一个共享空间(在about:config下查看它们)。您应该明确首选项属于您的扩展程序,并确保它不会与其他扩展程序或浏览器的首选项冲突。换句话说,使用类似“extensions.myExtension.epoch”而不是“epoch”的东西。