Javascript 保存chrome扩展的最后一个会话

Javascript 保存chrome扩展的最后一个会话,javascript,html,google-chrome-extension,Javascript,Html,Google Chrome Extension,在我的html文件中,我有一个简单的表和两个允许添加/删除行的按钮。如果我将该html存储在popup.html中,那么每次我关闭chrome扩展时,会话都会消失。也就是说,如果我添加了一些行并将一些值放入该表的单元格中,一旦我离开扩展名,当我再次单击扩展名时,这些行和值就会消失 作为一种解决方案,我将该html放入background.html并从popup.js检索该代码: // listeners to save/restore document.body window.addEvent

在我的html文件中,我有一个简单的表和两个允许添加/删除行的按钮。如果我将该html存储在popup.html中,那么每次我关闭chrome扩展时,会话都会消失。也就是说,如果我添加了一些行并将一些值放入该表的单元格中,一旦我离开扩展名,当我再次单击扩展名时,这些行和值就会消失

作为一种解决方案,我将该html放入background.html并从popup.js检索该代码:

// listeners to save/restore document.body 
window.addEventListener("unload", function(event) { 
  chrome.extension.getBackgroundPage().docBody = document.body; 
}); 

window.addEventListener("load", function(event) { 
  var 
    docBody = document.body, 
    lastDocBody = bgPage.docBody; 
  if (lastDocBody) 

docBody.parentElement.replaceChild(document.importNode(lastDocBody,true), 
docBody); 
}); 
但是,它不会将background.html的任何内容输出到我的扩展名

问题是一般性的:无论是否关闭扩展,我都希望保存表的最后一个状态。我该怎么做


或者特别是,如何从/到background.html加载/保存页面并将其内容上载到popup.js

您必须使用提供的存储API之一

最好使用的是,但您也可以在chrome扩展页面中使用
localStorage
。请参阅以进行比较。你也不需要背景页

注意:不能将DOM节点直接存储在这种存储中,因为数据必须是JSON可序列化的,并且DOM节点包含循环引用


所以,您需要存储用于添加行而不是行本身的数据,并在恢复状态时再次添加它们。无论如何,存储“原始”数据是一个好主意。

可能重复是的,我看到了这些问题,但没有说明如何解决我的问题。特别是,我对如何从/保存background.html页面感兴趣。或者提供如何在chrome.storage中存储我的表。我的答案基本上回答了这个问题。您需要存储数据,如果将这些数据放入行添加函数中,将生成表。如何读/写存储在其他地方,包括我链接的文档。您知道,如果没有看到用于生成表的代码,就不可能得到更详细的答案吗?我已经说过两次,直接存储DOM节点不是一种选择。