我正在创建一个侧边栏扩展,其中包含一个新选项卡按钮,该按钮在document.createElement() 函数的帮助下使用 javascript 将包含一些元素的新选项卡添加到我的侧边栏中包含的框中。现在我想恢复用户添加的新选项卡,同时使用扩展名,下次我的侧边栏在关闭后加载时以及文本框中填充的所有先前值。类似于 Firefox 的会话恢复功能
问问题
112 次
1 回答
0
据我了解,您正在谈论标签框元素。您实际上有两个不同的 XUL 文档 - 一个在 overlay.xul 和侧边栏的 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范围内的所有代码。要存储 tabboxe 的状态 - 只需在your_javascript_module中创建一些“存储”对象,并在每次打开侧边栏时刷新sidebar.xul内容。
我建议将所有 javascript 放入覆盖中,因为它将始终存在(当然直到 FF 打开),这与关闭时卸载的侧边栏脚本相反。希望这仍然有用-)
于 2013-12-12T09:44:45.747 回答