1. 準備工作
下載FireFox,我使用的版本是3.1b1
2. 創建存放擴展的目錄結構
進到目錄“%HOMEPATH%/Application Data/Mozilla/Firefox/Profiles”,再進入一個default結尾的目錄,然後再進入extensions目錄。這個目錄就是FireFox默認用戶存放所有擴展的地方。在我的機器上,這個目錄全稱是:C:/Documents and Settings/Administrator/Application Data/Mozilla/Firefox/Profiles/g0xoke2u.default/extensions
在這個目錄下創建一個新的目錄用來存放待開發的擴展,目錄名爲[email protected]。名字是隨便取的,大概像一個郵件地址即可,後面會用到。
進入剛建的目錄,再創建目錄chrome目錄。進入chrome目錄,再創建一個content目錄。
3. 添加Hello World到狀態欄
在content目錄下,創建一個ui.xul文本文件,輸入以下內容並保存:
- <?xml version="1.0"?>
- <overlay id="sample" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <statusbar id="status-bar">
- <statusbarpanel id="my-panel" label="Hello world" />
- </statusbar>
- </overlay>
到此,核心的工作已經完成。你可能奇怪爲什麼沒有編寫任何代碼。是的,FireFox的界面是由一系列的xml格式的xul文件定義的。如果你在瀏覽器的地址欄輸入
chrome://browser/content/browser.xul,你能看到頁面內置了另外一個FireFox。其中browser.xul定義了FireFox的主界面,你要做的就是找到browser.xul中定義的狀態欄,並在其上增加文本“Hello World”。
ui.xul正是完成了這樣的工作。其中statusbar id="status-bar"就是狀態欄,而statusbarpanel id="my-panel" label="Hello world"就是你在狀態欄中新增的子面板,裏面包含了你要顯示的文字。4. 告訴FireFox你添加的內容
接下來的工作和Hello World功能的實現無關。進入到本擴展的根目錄,也就是[email protected],新建一個文本文件chrome.manifest。內容如下:
overlay chrome://browser/content/browser.xul chrome://sample/content/ui.xul
content sample chrome/content/
這個文件告訴FireFox關於ui.xul文件的信息。其中第二行定義了一個名字爲sample的content,它的路徑是chrome/content/。第一行引用了這個content,並告訴FireFox這個content目錄下有個叫ui.xul的文件,它應該被用來和主界面文件browser.xul一起定義整個瀏覽器的界面。
5. 添加安裝信息
最後一步是定義關於這個擴展的信息,還是進入[email protected]目錄,新建一個install.rdf文本文件。內容如下:
- <?xml version="1.0"?>
- <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
- <Description about="urn:mozilla:install-manifest">
- <em:id>[email protected]</em:id>
- <em:version>1.00</em:version>
- <em:type>2</em:type><!--2 means this is an extension-->
- <!-- Target Application this extension can install into, with minimum and maximum supported versions. -->
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id><!--ID of firefox-->
- <em:minVersion>2.0</em:minVersion>
- <em:maxVersion>3.9</em:maxVersion>
- </Description>
- </em:targetApplication>
- <!-- Front End MetaData -->
- <em:name>Hello World</em:name>
- <em:description>Hello World</em:description>
- <em:creator>Xu Huanze(Wayne)</em:creator>
- <em:homepageURL>http://blog.csdn.net/ZJXHZ</em:homepageURL>
- </Description>
- </RDF>
6. 打包
你完全可以將剛纔創建的文件和目錄拷貝到另一臺機器上以完成安裝,但是也有其他的方法。這裏介紹一種比較簡單的,進入helloworld插件根目錄,將其打包成zip文件。注意:chrome.manifest和install.rdf必須在zip文件的根目錄下。重命名該文件,擴展名修改爲xpi。在另外一個FireFox上安裝時,可以打開“工具->附加組件”,然後將xpi文件拖放到這個窗口即可完成安裝。
7. 參考
https://developer.mozilla.org/en/Building_an_Extension
http://www.ibm.com/developerworks/cn/web/wa-lo-firefox-ext/#xpcom-sidebar