【问题标题】:Firefox SDK different panel per tabFirefox SDK 每个选项卡的不同面板
【发布时间】:2014-10-11 15:20:11
【问题描述】:

大家好,这是我的第一个 Stack Overflow 问题,所以要温柔。

我正在尝试使用 Firefox SDK 开发插件。我有一个连接到面板的按钮。该面板拦截某些网络请求并显示它们。

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

过去两天我一直在网上搜索,试图弄清楚如何做到这一点,但我什至找不到与之相关的主题。

如果您需要更多信息/代码 sn-ps,请告诉我。

【问题讨论】:

    标签: javascript firefox tabs firefox-addon-sdk


    【解决方案1】:

    您可以监听面板的隐藏和显示事件,并向面板的内容脚本发送消息,该脚本可以在那里调整内容。有关基本示例,请参阅 this gist,当然也请阅读 the extensive panel documentation

    考虑这一点的最佳方式是,面板是一个单页网络应用程序。当用户单击按钮时,向面板的内容脚本发送正确的信号,以便它可以显示正确的内容。当用户关闭面板或面板因其他原因关闭时,发送信号以清理并“重新设置”面板。

    如果您的代码依赖于对其他站点或服务的请求,我会做的是:

    1. 面板的默认状态是“加载中,请稍候”消息或动画
    2. 在打开面板时,提出您的请求,然后向面板的内容脚本发送一条消息,其中包含所需的任何数据。
    3. 关闭面板时,发出一条消息,将面板重新设置回“正在加载”状态,以便下次打开面板时做好准备。

    【讨论】:

    • 感谢您的帮助。这就是我最终解决问题的方式。为了为不同的选项卡模拟具有不同状态的面板,我有一个 javascript 对象,其键是 tabid。在“停用”事件中,我将面板中的 HTML 添加到对象中。在“激活”事件中,我检查对象是否包含该 tabid 的任何 HTML。如果是这样,我使用 JQuery 替换初始 HTML。似乎工作得很好。
    • 是的,特别是如果您将特定的静态 html 映射到每个选项卡。如果没有关于您的用例的大量详细信息,很难说出正确的答案是什么。 :)
    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多