我正在创建一个侧边栏扩展程序,其中包含一个新标签按钮,该按钮会在我的侧边栏中使用javascript帮助添加一个包含一些元素的新标签页 document.createElement()函数。现在,我希望恢复用户在使用扩展程序时使用扩展程序,下次关闭后加载侧边栏以及文本框中填写的所有先前值 。 类似于firefox的会话恢复功能
答案 0 :(得分:0)
据我所知,你在谈论tabbox元素。 实际上你有两个不同的XUL文档 - 一个在overlay.xul和sidebar的xul文档中重新定义。 我通过以下方式解决了与侧边栏数据存储完全相同的问题: 所有javascript代码都使用以下内容存储为主窗口的对象:
var your_javascript_module = (function () {
//your code here
})();
将模块初始化放入 scripts.js ,从 overlay.xul 引用它 当您打开侧边栏(并加载,假设 sidebar.xul )时,您可以使用以下代码访问此对象:
var your_javascript_module =window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow).your_javascript_module;
使用此功能,您可以访问 sidebar.xul 范围内的所有代码。 要存储taboxe的状态 - 只需在 your_javascript_module 中创建一些“存储”对象,并在每次开启侧边栏时刷新 sidebar.xul 内容。
我建议将所有javascript放到叠加层中,因为它总是存在(直到FF打开),这与侧边栏上关闭时卸载的脚本相反。 希望这仍然有用 - )