将对象设置为 Chrome 存储

Setting Object to Chrome Storage

所以我试图通过 chrome.storage API 保存一个对象。相关代码为:

 var images = null;     
 var storage = chrome.storage.sync;
 var key = "key";

 images = getImages(source);
 alert(images.length); // returns 4

 storage.set({key: images});

 storage.get("key", function(result) {
    alert(result.length); // returns undefined
 });

我在 getImages() 函数之后立即测试,images 是一个包装集 JQuery 对象,长度为 4。但是,当我尝试访问 images.length 通过storage.get 回调,结果未定义。

有人可以帮助识别我存储 and/or 检索此 JQuery 对象的方式中的错误吗?

更新 1:

谢谢大家的帮助。作为对用例的说明,我使用 chrome.storage 而不是 localStorage 因为我打算将扩展信息传递给另一个脚本。

幸运的是,TranQ/Xan 的解决方案使我能够通过 storage.get 调用访问数组。

我在使用存储在数组中的包装集 JQuery 对象时仍然遇到问题,但我会 post 一个单独的问题,因为当前的解决方案封装了更广泛的用例。

TranQ 的评论很中肯。

据推测,images是一个数组。您将该数组存储在 "key" 键下。

当您执行 get() 函数时,它 returns an object 填充了您请求的所有键值对,即使您只请求一个键。

所以,result 是一个对象 {key : [/* something */]}。对象没有 length 属性,你得到 undefined

您需要使用 result.key(或 result["key"])来访问您的数组。