【问题标题】:Restoring sidebar state in xul在 xul 中恢复侧边栏状态
【发布时间】:2013-07-14 07:12:33
【问题描述】:

我正在创建一个 sidebar 扩展,其中包含一个 new tab 按钮,该按钮在document.createElement() 函数。现在我想恢复用户在使用扩展程序时添加的新选项卡,下次我的侧边栏在关闭后加载时以及 文本框 中填充的所有先前值. 类似于 firefox 的会话恢复功能

【问题讨论】:

  • 你实现了你想要的吗?
  • 实际上没有......我稍微改变了想法......所以找到了解决问题的方法......无论如何感谢您的帮助......

标签: firefox-addon xul firefox-sidebar


【解决方案1】:

据我了解,您说的是标签框元素。 您实际上有两个不同的 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 打开),这与关闭时卸载的侧边栏脚本相反。 希望这仍然有用-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多