2014-10-11 36 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