无法通过Firefox中的密钥获取存储的对象值

时间:2014-01-17 13:54:47

标签: javascript cross-browser greasemonkey tampermonkey

假设我第一次运行脚本时通过test存储了一个数组GM_setValue('test', []);,以确保它在那里。

现在,如果我要通过test将局部变量var test = GM_getValue('test');分配给此,请在脚本中的某个位置推送一个新对象,如test.push({id: '...'});,然后通过执行操作保存它这个GM_setValue('test', test);存储的数组将是[{ id: '...' }]

现在我需要在脚本中稍后从数组中的对象获取值id,因此我只需执行此操作test[0]['id']。但是,这似乎返回 undefined

好的,它可能不是出于某种原因存储对象,所以这就是我要做的事情:

console.log(test);
console.log(test[0]);
console.log(test[0]['id']);

令人惊讶的是,test返回一个包含该对象的数组,而id又test[0]返回包含具有正确值的id的Object,但是test[0]['id']仍返回 undefined

这适用于使用Tampermonkey的Chrome,但是当脚本在带有Greasemonkey的Firefox上运行时会出现问题。问题可能是什么?

1 个答案:

答案 0 :(得分:2)

GM_setValue不存储对象;它存储字符串或整数。请参阅the doc page

使用GM_SuperValue等序列化工具。