为什么chrome.storage提供给我[Object Object]? [英] Why does chrome.storage give me [Object object]?
本文介绍了为什么chrome.storage提供给我[Object Object]?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建了一个管理Internet历史记录、浏览器Cookie等的Chrome扩展。如果您一周内没有运行它,我会尝试发出通知,因此我使用chrome.storage
在您每次使用该扩展时保存时间戳。
以下是我的代码:
<;popup.js>;
function clear()
{
chrome.browsingData.removeHistory({"since":0}, callback);
var now = new Date();
chrome.storage.local.set({key: now}, function() {
console.log('Value is set to ' + now)
}
(回调为空函数)
<;backround.js>;
chrome.storage.local.get(["key"], function(result) {
alert (result.key)
});
当我测试它时,它给了我:
[object Object]
为什么此代码为我提供此时间戳,而不是我保存的时间戳?
推荐答案
JSON类型
chrome.storage和Chrome中的扩展messaging一样,只支持JSON兼容类型:
- 数字,但不是
BigInt
- 字符串
- 布尔值
true
和false
null
但不是undefined
- 由上述简单类型组成的对象/数组
- 可以嵌套
- 不能有循环自引用
- 密钥必须是不是
Symbol
的字符串
- 不支持的部分将被剥离,因此复杂类型将生成
{}
它不支持DOM元素、类实例、Set、Map、RegExp、Date等。
这些将存储为{}
。
要查看实际存储的内容,请在您的代码或DevTools控制台中运行以下命令:
console.log(JSON.parse(JSON.stringify(obj)))
可能的解决方案
Store Date.now(),数字:
chrome.storage.local.set({key: Date.now()})
要重新创建日期:
chrome.storage.local.get('key', data => {
console.log(new Date(data.key));
})
媒体对象的备选方案
- 转换为数据URI字符串。
- 转换为ArrayBuffer并存储在IndexedDB中。
+
连接console.log中的字符串和对象。使用,
如下:console.log('Value is set to', now)
这篇关于为什么chrome.storage提供给我[Object Object]?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文