Firefox擴展開發

轉載請保留本行原始出處聲明信息 : http://www.zeali.net/entry/567 MaDe1nZEAL
標籤 ( 開發/理論 ): firefox , 瀏覽器 , xul

最近玩了一把Firefox的擴展開發,感覺不錯。倒騰出來一個ChinaStock,有興趣的可以瞧瞧(現在還被放在Sandbox裏面,必須登錄才能下載安裝;同時因爲被放在sandbox裏面,暫時還不能被自動更新版本)。如果您願意的話,也可以直接在本站下載安裝

擴展開發中用得着的擴展(有點拗口):

Extension Developer's Extension  (xpi download / install address) 快速將擴展目錄打包成xpi文件,在不重啓Firefox的情況下重新載入所有擴展以及其他實用小功能。必備!如果不使用該擴展快速重載擴展的話,每次修改代碼之後都必須從Firefox的菜單欄選擇“退出”關閉Firefox再打開纔有99%的機率保證該Chrome內容是最新修改後的,那叫一個痛苦。即使設置參數 nglayout.debug.disable_xul_cache = true ,也只是減少了修改窗口或對話框之後的重啓而已。

Chrome List + Extension Manager Extended 學習其他人寫的擴展總是最快入門的方法。 Chrome List 提供了擴展瀏覽功能,可以查看擴展安裝之後存在的問題和jar包裏面的源代碼;Extension Manager Extended 則擴展了Firefox的擴展軟件列表功能,直接顯示每個擴展的ID,通過右鍵可以直接打開擴展存放的目錄,再不需要去資源管理器找深埋在 Application Data/Mozilla/Firefox/Profiles/!@#$%^.default/extensions 裏的jar包,也不需要去猜測使用UUID作爲ID的擴展到底對應在哪個子目錄了。

DebugLogger + Console2 DebugLogger 是 dump() 的優化版本。可以按照每個項目分別查看各自的dump信息。像 Firebug 這樣的大師級擴展屬於開發必備不需多講,這個 DebugLogger 相較而言屬於輕量級並且原始的調試輔助工具。配合它,至少不需要再用alert來簡單粗暴了。 Console2 則是錯誤控制檯的加強版,實現了 Firefox 3 錯誤控制檯的一些特性。

現有HTML代碼的利用:

雖然並不被鼓勵,但對於更熟悉HTML語法的開發者來說, 最快捷編寫擴展界面的方法是在 XUL 中引入 HTML 命名空間(爲根標籤增加屬性 xmlns:html="http://www.w3.org/1999/xhtml"),然後給所有使用到的HTML標籤添加 html: 前綴(比如 <div>...</div> 應該寫成 <html:div>...</html:div>)即可。當然,因爲 XUL 是基於 XML 的語言,所以所有的標籤屬性都應該是小寫格式,並且空tag必須進行關閉。

相應的,由於上述定義方式下HTML 元素標籤定義不在主命名空間內,當進行 DOM 操作的 js 代碼在創建 HTML 元素的時候,也不能直接使用 createElement ,而必須使用 createElementNS 。比如 document.createElementNS("http://www.w3.org/1999/xhtml","html:div");

關於擴展ID:

每個擴展軟件都必須有個唯一的標識ID,建議是使用UUID,也可以使用形如 [email protected](必須有@符號但不必是真實的域名) 的字符串。生成UUID的方法很多:windows下可以安裝微軟自己提供的GUID Generator,*nix 下直接敲命令 uuidgen ,或者訪問這裏在線生成一個。個人覺得雖然UUID不會造成ID衝突,但 @ 形式的可讀性更強一些,否則不靠前面提到的擴展幫忙要把ID跟功能對應起來還真是件費力的事情。 

擴展描述的本地化:

在 Firefox 擴展管理器中,每個擴展的名字下面都有一段簡短的描述(description),這段描述來自擴展根目錄下的 install.rdf 文件。將這段描述進行本地化處理的方法是在擴展目錄下創建子目錄 defaults/preferences ,在子目錄下新建一個 js 文件 myextname.js ,包含以下內容:

pref("extensions.ReplaceWithExtensionIDHere.description", "chrome://myextname/locale/myextname.properties");

同時在 locale 語言包文件 myextname.properties 中添加一行:

extensions.ReplaceWithExtensionIDHere.description = 經過本地化的描述內容

擴展的打包發佈:

如果使用 Extension Developer's Extension 提供的extension builder 進行打包,它會在build的過程中自動將chrome.manifest中的目錄配置替換成jar:chrome的形式,而不需要自己來回切換不同的chrome.manifest配置。當然前提是你的擴展工作目錄按照約定的結構進行組織。如果你沒有把content / skin / locale 目錄放在工作根目錄而是放在了 chrome 子目錄下的話,打包之後xpi文件會同時包含jar文件和chrome整個目錄。生成xpi文件之後,到 Firefox Add-ons 的開發者工具界面進行註冊/登錄/上傳即可。

如果代碼實際是兼容Firefox的最新版本的,只是因爲在install.rdf裏面的em:maxVersion設置了過老的版本號而導致你發佈在AMO上的擴展被認爲不兼容而無法下載的話,可以登錄AMO後進入開發者工具管理界面,選擇相應的擴展,點擊版本歷史列出的版本號鏈接進去,就可以快速修改該版本xpi的兼容版本範圍(找這個修改的地方找了N久,OrZ)。

參考文檔:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章