保存上一个chrome扩展会话

时间:2015-04-14 15:46:48

标签: javascript html google-chrome-extension

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

作为解决方案我saw将该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

1 个答案:

答案 0 :(得分:0)

您必须使用提供的其中一个存储API。

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

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

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