在Chrome Storage中存储HTML OBJECT数组,用于Chrome扩展程序



背景:

我正在编写一个 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是用回调实现的,而不是用getset调用本身的返回值实现的。

// 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事件(这只是会干扰处理程序的众多情况之一)。

最新更新