将对象设置为Chrome存储

Setting Object to Chrome Storage

本文关键字:Chrome 存储 设置 对象      更新时间:2023-11-02

所以我试图通过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()函数之后,图像是一个长度为4的包装集JQuery对象。但是,当我尝试通过storage.get回调访问images.length时,结果是未定义的。

有人能帮我识别存储和/或检索这个JQuery对象时的错误吗?

更新1:

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

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

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

TranQ的评论切中要害。

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

当您执行get()函数时,它会返回一个对象,该对象填充了您要求的所有键值对,即使您只要求一个键。

因此,result就是一个对象{key : [/* something */]}。对象没有length属性,并且会得到undefined

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