2014-01-17 17 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

相關問題