2014-01-17 16 views
3

假设我有一个数组test,该数组通过GM_setValue('test', []);存储,当脚本第一次运行时确保它在那里。无法通过Firefox中的密钥获取存储的对象值

现在,如果我是通过var test = GM_getValue('test');分配局部变量test这一点,在某些时候在脚本推一个新的对象,像这样test.push({id: '...'});,然后在其上做这个GM_setValue('test', test);存储阵列会是这样[{ id: '...' }]保存。

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

Alrighty,很可能它没有存储出于某种原因对象,所以这里是我会做:

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

令人惊讶的是,test返回一个包含对象,并依次编号的阵列,test[0]返回包含具有正确值的id的对象,但test[0]['id']仍会返回undefined

这与Tampermonkey的Chrome完美搭配,但是当脚本在Firefox上运行Greasemonkey时出现问题。这个问题可能是什么?

回答

2

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

使用像GM_SuperValue这样的序列化程序。

+0

噢,我不是个聪明人。我甚至也翻了几页浏览该页面。我很惊讶我还没有死于喝过期牛奶。谢谢! – AlphaDelta

相关问题