2012-09-26 158 views
3

我正在開發Firefox的Addon SDK(v1.10)上的擴展。從標籤獲取窗口對象

我的擴展程序有一個工具欄按鈕,根據活動選項卡的內容將小徽章更新到其左側。

問題

當存在多個窗口打開時,得到的ToolBarButton更新到有源標籤的值,無論它是否是相同的窗口上。這意味着非活動窗口的toolbarbutton正在更新來自不同窗口的數據。

有權訪問數據來自哪裏的標籤對象,有沒有一種方法來識別標籤附加到的窗口對象?

這種方法與here描述的方法相反。

回答

3

查看SDK源代碼(即packages/api-utils/lib/tabs/tab.js),tab對象實際上具有window屬性。我測試了它和這個作品確實:

console.log(require("tabs").activeTab.window.title); 

不知道爲什麼,這個屬性是沒有記錄,可能是一個文檔錯誤。

1

這是活動窗口嗎?你可以得到一個窗口對象使用

windows.browserWindows.activeWindow 

文檔的當前活動窗口:https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/addon-kit/windows.html#browserWindows

窗口對象有目前在它打開的選項卡的列表:

https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/addon-kit/windows.html#tabs

如果您需要在不是當前活動選項卡或窗口的窗口中查找選項卡,這可能更難以確定。你能提供更多關於你實際想要做什麼的細節嗎?

+0

我的擴展在每個打開的選項卡上執行計算,並通過在我創建的工具欄按鈕上顯示帶有數字的小徽章來顯示結果。這些計算是動態的,並且在任何時間點都會發生(不僅在選項卡處於活動狀態或加載狀態時)。到目前爲止,我執行計算並在製表符激活時更新工具欄按鈕上的徽章,以便始終向正在使用的製表位顯示相應的徽章。當兩個或更多的窗口同時打開時,問題就出現了。我怎樣才能確定我應該在哪個窗口更新按鈕的徽章? – josesigna

+1

使用activeWindow是不可能的,因爲我的擴展的計算的動態性質:我可以使用不同的窗口,而我的擴展是在另一個打開的窗口上記錄信息。 – josesigna