Exception Firefox插件';这是一种奇怪的行为

Exception Firefox插件';这是一种奇怪的行为,exception,xul,preference,Exception,Xul,Preference,我有一个首选项,并使用下面的语句访问它的内容 var st = easyfa.branch.getComplexValue("mapstr",Components.interfaces.nsIPrefLocalizedString).data; 这会引发异常: *Component returned failure code: 0x804b000a (NS_ERROR_MALFORMED_URI) [nsIPrefBranch.getComplexValue]* 但是在手动设置首选项的值后

我有一个首选项,并使用下面的语句访问它的内容

var st = easyfa.branch.getComplexValue("mapstr",Components.interfaces.nsIPrefLocalizedString).data; 
这会引发异常:

*Component returned failure code: 0x804b000a (NS_ERROR_MALFORMED_URI) [nsIPrefBranch.getComplexValue]*

但是在手动设置首选项的值后(通过输入about:config),错误消失了

获取未设置的首选项的值将始终抛出。您必须将其包装在
try catch
块中,并相应地进行处理。

本地化首选项的默认值必须是
.properties
文件的chrome URL,在该文件中查找首选项以定位生成的字符串。假设URL指向区域设置文件,则允许根据安装的语言更改值


但是,您似乎需要一个简单的字符串首选项,您应该使用
nsistupsstring
接口检索该首选项。

的确如此,但它会抛出
NS\u ERROR\u意外的
,不是
NS\u ERROR\u格式错误的URI
。在另一个回答中,Neil解释说,因为您在
getComplexValue
中使用
nsipreLocalizedString
作为您的输入,所以它试图生成URI。基本上,后端会尝试从空字符串创建uri,这会导致抛出。将nsIPrefLocalizedString更改为nsISupportsString修复了所有问题!谢谢。