Jon*_*Lee 3 local-storage google-chrome-extension
我制作了一个 chrome 扩展来管理互联网历史记录、浏览器 cookie 等。如果您一周没有运行它,我会尝试发出通知,所以chrome.storage
每当您使用该扩展时我都会保存时间戳。
这是我的代码:
<弹出.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)
}
Run Code Online (Sandbox Code Playgroud)
(回调是一个空函数)
<背景.js>
chrome.storage.local.get(["key"], function(result) {
alert (result.key)
});
Run Code Online (Sandbox Code Playgroud)
当我测试这个时,它给了我:
[object Object]
Run Code Online (Sandbox Code Playgroud)
为什么这段代码给了我这个,而不是我保存的时间戳?
chrome.storage,就像 Chrome 中的扩展消息传递一样,仅支持 JSON 兼容类型:
BigInt
true
和false
null
但不是undefined
Symbol
{}
它不支持 DOM 元素、类实例、Set、Map、RegExp、Date 等。
这些将被存储为{}
.
要查看实际存储的内容,请在代码或 devtools 控制台中运行以下命令:
console.log(JSON.parse(JSON.stringify(obj)))
Run Code Online (Sandbox Code Playgroud)
存储 Date.now() 这是一个数字:
chrome.storage.local.set({foo: Date.now()})
Run Code Online (Sandbox Code Playgroud)
要重新创建日期:
chrome.storage.local.get('foo', data => {
const date = new Date(data.foo);
// use it here
})
Run Code Online (Sandbox Code Playgroud)
储存:
chrome.storage.local.set({foo: [...map]})
Run Code Online (Sandbox Code Playgroud)
阅读:
chrome.storage.local.get('foo', data => {
const map = new Map(data.foo);
// use it here
})
Run Code Online (Sandbox Code Playgroud)
PS 不要用于+
连接 console.log 中的字符串和对象。,
像这样使用:console.log('Value is set to', now)