2012-10-22 49 views
0

我編寫了一個Firefox擴展(MyPlugin),它將一些功能添加到另一個Firefox擴展(MainExtension)中。我想把它放在Mozilla附加組件頁面上,但是我會首先檢查構建這種擴展的最佳方式。爲Firefox擴展定義插件的正確方法

目前,我將MainExtension的xul與MyPlugin的xul疊加在chrome.manifest中。在MyPlugin的xul中,標籤調用一個.js文件,該文件定義了MainExtension.MyPlugin及其所有可以由疊加元素調用的方法。

這個設置本身好嗎?當我第一次嘗試將插件上傳到Mozilla Add-ons頁面時,我發現不再支持install.rdf的「requires」元素。我一直在想,這將檢查MainExtension是否實際安裝。我是否應該在插件中檢查錯誤,以確保MainExtension已安裝?我認爲現在chrome.manifest中的疊加線會失敗,如果MainExtension沒有安裝,那麼沒有其他事情會發生,這似乎很好。從功能上來說,我不打算在沒有主擴展的情況下安裝插件,所以這不應該是一個問題,但是因爲我想發佈其他人可以下載的擴展名,所以我想確保我不會產生任何問題對他們來說(我並不熟悉Firefox擴展結構 - 大多數情況下,我通過查看其他已發佈的擴展來將它們放在一起)。

回答

0

所以我在擴展上做了一些工作,在線閱讀了更多的文檔,並且諮詢了一些更有經驗的開發人員,我現在所使用的解決方案是使用模塊來定義我的一些基本內部部分延期。我在模塊中創建了一個MyPlugin對象,然後通過使用一個模塊來實現Firefox通用。然後,通過MainExtension的xul覆蓋調用的腳本,我創建另一個chrome對象(稱爲MyPluginChrome),其中只包含與MainExtension的XUL元素交互相關的函數。當問這個問題時,我認爲有必要定義一個XPCOM組件,以便讓我的插件獨立運行,並且這對我的簡單插件來說似乎對於現有的擴展來說過分了,但是使用模塊使得插件與單獨的插件沒有多大區別我一直在做事情的方式。

爲了學習如何進行上述操作,我使用了Mozilla Developer Network站點的XUL School tutorial中的JavaScript Object Management頁面。本教程有點古怪(因爲它是從其他來源改編的),但非常有幫助。它與MDN上的Building an Extension頁面分開。其他幾個較老的網頁在Google上的點擊量更高,但我發現XUL School教程是最有用的和最有用的。