2014-10-11 24 views
0

大家好,这是我的第一个堆栈溢出问题,所以要温和。Firefox SDK不同面板每标签

我想开发一个Firefox SDK的插件。我有一个连接到面板的按钮。面板拦截某些Web请求并显示它们。

我的问题是面板保持它的状态跨我所有的标签和窗口。我希望每个选项卡都有一个具有自己状态的面板。这样,当我在选项卡之间导航时,面板将显示与该特定选项卡相关的数据,但不显示其他选项卡。每次切换选项卡时,我都无法简单地重新构建面板,因为用户必须重新加载页面才能重新拦截Web请求。

我一直在网上搜索最近两天试图找出如何做到这一点,我什至不能找到一个相关的话题。

如果您需要更多的信息/代码片段让我知道。

回答

0

您可以侦听面板的隐藏和显示事件,并将消息发送到面板的内容脚本,以便调整其中的内容。有关基本示例,请参见this gist,当然请参阅the extensive panel documentation

想想这个的最好方法是,面板是一个单页面的web应用程序。当用户点击按钮时,将正确的信号发送到面板的内容脚本,以便显示正确的内容。当用户关闭面板或由于其他原因关闭面板时,请发送信号清理并“重新设置”面板。

如果你的代码依赖于一个请求了一些其他网站或服务,我会做的是:面板

  1. 默认状态是“加载中,请等待”的消息或动画
  2. 上打开面板,发出请求,然后向面板的内容脚本发送一条消息,告诉它所需的任何数据。
  3. 在关闭面板时,会发出一条消息,将面板重新设置回“加载”状态,以便在下一次面板打开时做好准备。
+0

感谢您的帮助。这就是我最终解决问题的方式。为了模拟不同标签的不同状态的面板,我有一个JavaScript对象,键是tabid。在“停用”事件中,我将面板中的HTML添加到对象。在“激活”事件中,我检查对象是否包含该tabid的任何HTML。如果是这样,我使用JQuery替换最初的HTML。似乎工作得很好。 – 2014-10-13 21:30:06

+0

是的,特别是如果你有特定的静态HTML映射到每个选项卡。很难说没有关于你的用例的很多细节什么是正确的答案。 :) – canuckistani 2014-10-14 20:55:44