背景:
我正在编写一个 chrome 扩展,当您访问某个页面时,它会找到所有表格行并存储它们,当您返回时,它会显示已添加的所有新值。
我想在存储中存储一个数组,以便当用户返回页面时,我可以访问它。主要是每次比较结果,看看是否有任何变化。
例。
myArray = [HTML OBJECT, HTML OBJECT, HTML OBJECT];
on.window.unload {
Chrome.storage.set(STORE MY ARRAY)
}
on.windows.onload {
chrome.storage.get(MY STORED ARRAY AND SET TO OLD_myArray[])
}
function compareArrays() {
TO DO STUFF WITH MY myArray[] and OLD_myArray[]
e.g. comparing values to see if anything has changed.
}
我尝试过本地存储,但意识到它不存储数组,因此移至 Chrome 存储。
我想帮助让 myArray 在卸载时存储自身,然后将自身设置为OLD_myArray加载,所以我可以比较差异的值。谢谢。
为了使用chrome.storage
,您需要使用以下两种方法之一:
chrome.storage.sync
,它将保存的数据同步到用户登录的任何浏览器。chrome.storage.local
,仅将数据保存到当前机器。
正如官方文档所讨论的,chrome.storage
是用回调实现的,而不是用get
或set
调用本身的返回值实现的。
// Save the current myArray value.
chrome.storage.local.set({'storedArray': myArray}, function() {
console.log(`storedArray now contains ${myArray}.`);
});
// Retrieve the the stored value, defaulting to an empty array.
chrome.storage.local.get({'storedArray': []}, function(data) {
console.log(`storedArray's value is ${data.storedArray}.`);
});
顺便说一句,将存储函数附加到unload
事件可能不是一个好主意,因为浏览上下文可能会在操作完成之前终止。例如,浏览器崩溃不会调用window.unload
事件(这只是会干扰处理程序的众多情况之一)。