在我的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
答案 0 :(得分:0)
您必须使用提供的其中一个存储API。
最好使用的是chrome.storage
,但您也可以在Chrome扩展程序页面中使用localStorage
。请参阅this question进行比较。您也不需要背景页面。
请注意:您不能将DOM节点直接存储在此类存储中,因为数据必须是JSON可序列化的,并且DOM节点包含循环引用。
因此,您需要存储用于添加行而不是行本身的数据,并在恢复状态时再次添加它们。无论如何,存储“原始”数据是一个好主意。