我just learned about jquery's .makeArray我試圖使用JSON.stringify在localStorage中存儲數組,但我有意想不到的結果。在localStorage中存儲數組使用JSON.stringify
這工作:
var links = {'one': 1, 'two': 2 };
var setstr = JSON.stringify(links);
localStorage.setItem('strlinks', setstr);
var getstr = localStorage.getItem('strlinks');
console.log(getstr); //Returns what's expected - '{"one":1, "two":2}'
這不:
var links = $.makeArray($('a'));
alert(links); //Returns list of links
var setstr = JSON.stringify(links);
localStorage.setItem('strlinks', setstr);
var getstr = localStorage.getItem('strlinks');
console.log(getstr); //Returns '[]'
什麼我做錯了任何想法?
也許我在吠叫錯誤的樹,但這是爲了擴展鉻。我的想法是通過內容腳本將數組添加到localStorage中,然後當用戶單擊瀏覽器圖標時,循環訪問鏈接並在彈出窗口中顯示它們。我對鉻擴展是新手,但我的理解是彈出窗口不能直接訪問內容腳本中的變量,因此需要本地存儲。但是我可能會離開這個標記。 – plntxt 2010-07-27 23:57:39
對鏈接的引用不能放在'String'中,'localStorage'唯一會存儲。但彈出窗口不需要觸摸鏈接本身,是嗎?它只需要知道鏈接指向的URL('href'),當然?這只是一個'String',所以當然可以被JSON字符串化。不是我認爲你實際上需要'localStorage'。我不知道Chrome,但大多數瀏覽器擴展應該沒有問題打開一個新窗口並填充字符串列表,而無需通過任何'localStorage'數據庫進行調解。 – bobince 2010-07-28 00:17:27
您可以使用背景頁作爲控制器,並從那裏訪問存儲的值。查看我的新標籤重定向代碼示例(我在中繼代碼中使用JSON.stringify)http://code.google.com/p/newtabredirect/ – 2010-07-28 00:17:36