我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