문제

Let's say I had an array test that was stored via GM_setValue('test', []); when the script has been run for the first time to ensure that it's there.

Now if I were to assign the local variable test to this via var test = GM_getValue('test');, push a new object at some point in the script like so test.push({id: '...'}); and then save over it by doing this GM_setValue('test', test); the stored array would be this [{ id: '...' }].

Now I need to get the value with the key id from the object in the array later in the script, so I'll simply do this test[0]['id']. However this appears to return undefined.

Alrighty, it's possible it's not storing the object for some reason, so here's what I'll do:

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

Amazingly, test returns an Array containing the object and in turn the id, test[0] returns the Object containing the id with the correct value, however test[0]['id'] still returns undefined.

This works perfectly on Chrome with Tampermonkey, but the problem arises when the script is running on Firefox with Greasemonkey. What could the problem possibly be?

도움이 되었습니까?

해결책

GM_setValue does not store objects; it stores strings or integers. See the doc page.

Use a serializer like GM_SuperValue.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top