将对象设置为 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"]
)来访问您的数组。
所以我试图通过 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"]
)来访问您的数组。