假设我有一个数组 test
,它是通过 GM_setValue('test', []);
存储的,当脚本第一次运行时确保它就在那里。
现在,如果我要通过 var test = GM_getValue('test');
将局部变量 test
分配给它,则在像这样的脚本 test.push({id: '...'});
然后通过执行此操作保存它存储的数组将是这个 [{ id: '...' }]
。
现在我需要在脚本后面的数组中使用键 id
从对象中获取值,所以我将简单地执行此操作 test[0]['id' ]
。然而,这似乎返回undefined。
好吧,可能由于某种原因它没有存储对象,所以这是我要做的:
console.log(test);
console.log(test[0]);
console.log(test[0]['id']);
令人惊讶的是,test
返回一个包含对象的数组,然后返回 id,test[0]
返回包含具有正确值的 id 的对象,但是 test[0]['id']
仍然返回 undefined。
这在带有 Tampermonkey 的 Chrome 上运行完美,但是当脚本在带有 Greasemonkey 的 Firefox 上运行时会出现问题。可能是什么问题?
最佳答案
GM_setValue
不存储对象;它存储字符串或整数。参见 the doc page .
使用类似 GM_SuperValue 的序列化程序.
关于javascript - 无法通过 Firefox 中的键获取存储的对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21187650/