2012-04-17 78 views
2

我有一個基於xul overlay的Firefox加載項。它具有在content/options.xul中定義的內聯選項,當用戶轉到Firefox->附加組件 - >擴展 - > {我的擴展名} - >選項時,它們正確顯示/正常運行。選項以編程方式顯示options.xul

問題,我可以在我的附加組件上創建一個按鈕,通過將用戶帶到Firefox->附加組件 - >擴展組件 - > {我的擴展名} - >選項,啓動我的選項,只需點擊一下鼠標或啓動基於options.xul的對話框?

現在我正在維護一個單獨的options.html和options.js,獲取並設置options.xul在用戶通過Firefox按鈕瀏覽時處理的相同設置,但我更願意轉儲options.html和options .js並只維護我的main.js和options.xul。

任何意見或代碼示例將不勝感激。

回答

4

這是最簡單的通過在瀏覽器窗口中定義一個全局函數BrowserOpenAddonsMgr()做的,是這樣的:

BrowserOpenAddonsMgr("addons://detail/" + encodeURIComponent(addonID)); 

此函數負責集中現有的附加選項卡,如果有一個或開設新的標籤。它不會向下滾動到選項,但是如果插件具有冗長的描述,則這是一個問題。與Firefox 12開始這可以通過添加「/首選項」的視圖標識符來解決:

BrowserOpenAddonsMgr("addons://detail/" + encodeURIComponent(addonID) + "/preferences"); 

對於較早的Firefox版本你的運氣了(你不應該使用這個後綴有,也不會工作)。另一個問題是,可能會有一個漫長的「加載」階段,其中附加組件管理器爲所有擴展提取元數據。

+0

非常感謝,真是太棒了! – 2012-04-17 19:48:50

+0

我無法使用'BrowserOpenAddonsMgr()'函數。我無法在網上找到任何文檔或其他用途。我可以在addon sdk的main.js中使用嗎? – thefoyer 2012-10-01 01:52:05

+2

@thefoyer:你不能 - 它是一個在瀏覽器窗口的上下文中定義的函數。這意味着您首先必須使用低級模塊獲取瀏覽器窗口,然後調用該函數:'require(「window-utils」)。activeBrowserWindow.BrowserOpenAddonsMgr(...)'。這個函數是一個實現細節,因此除了源代碼之外,其他地方都不會找到它。 – 2012-10-01 14:18:57

相關問題