準(zhǔn)備做一個(gè)Firefox插件,用來(lái)接收從WEB頁(yè)面?zhèn)鬟f的參數(shù),根據(jù)這些參數(shù)從服務(wù)器上下載一些文件到本地,并調(diào)起本地的一個(gè)應(yīng)用程序。
以前在IE中是使用一個(gè)ActiveX來(lái)實(shí)現(xiàn)的。FF的插件從來(lái)沒(méi)有做過(guò),不知道將來(lái)會(huì)遇到多少困難。
在網(wǎng)上發(fā)現(xiàn)一個(gè)頁(yè)面:http://ted.mielczarek.org/code/mozilla/extensionwiz/,它提供了一個(gè)FF擴(kuò)展的生成向?qū)В顚懲瓯匾畔⒑螅瑫?huì)生成一個(gè)zip文件。之后我改名為xpi后,丟到我的FF 3.0中,提示不正確的安裝包。看來(lái)這個(gè)向?qū)п槍?duì)FF3還有些問(wèn)題。具體問(wèn)題是什么?現(xiàn)在還不清楚。讓我來(lái)繼續(xù)尋找資料……
在Mozilla網(wǎng)站上了解到,F(xiàn)F的Extension和Plugin是兩種概念的東西:
Extension就是一個(gè)zip包,里面有規(guī)定的一些必要文件。這個(gè)可以下載幾個(gè)插件看一下他們的目錄結(jié)構(gòu)就好了。我下載了一個(gè) QuickNote,看了一下,主要包括一個(gè)install.rdf(安裝包相關(guān)信息和文件資源路徑等配置)、chrome.manifest(設(shè)置各種XUL文件路徑以及其他的一些資源文件路徑)、chrome文件夾(里面放著插件的所有源文件),不過(guò)chrome文件夾里面的文件我還沒(méi)有過(guò)多研究。
Plugin好像是另外一碼事了,在Mozilla Developer Center的Plugin開發(fā)介紹文中有這么一句:Plugins are different from extensions, which modify or enhance the functionality of the browser itself. Plugins are also different from search plugins, which plug additional search engines in the search bar. (插件與擴(kuò)展不同,它更改或者改善了瀏覽器自身的功能。插件與搜索插件又不同,搜索插件在搜索工具欄上添加了額外的搜索引擎。)
我的理解,插件可以讓你在FF中使用自己的View來(lái)展示、用自己編寫的二進(jìn)制文件來(lái)做某些事情,不僅僅是利用FF自身支持的一些特性和功能。而擴(kuò)展相對(duì)來(lái)說(shuō)就不需要這些東西,只利用FF的開發(fā)API就好了。
這樣看來(lái),要實(shí)現(xiàn)我開始提到的需求,似乎可以開發(fā)一個(gè)Extension就可以了。Foxmarks Bookmark Synchronizer(FBS)也差不多是我的需求這種感覺(jué):將本地某些數(shù)據(jù)上傳至服務(wù)器,從服務(wù)器同步下載一些數(shù)據(jù)到本地。FBS既然是一個(gè)擴(kuò)展能夠?qū)崿F(xiàn),那么看來(lái)我暫時(shí)不用研究Plugin了,呵呵。
OK,有了大概的目標(biāo)。下面開始制訂學(xué)習(xí)計(jì)劃!
通過(guò)研究別人寫的Extension,里面有很多js、css、images、html,這些應(yīng)該還好理解,但是多了一些后綴名為xul的文件。這是什么東西?看來(lái)想開發(fā)Extension,這個(gè)文件需要好好研究一下。
因此,我的第一個(gè)學(xué)習(xí)計(jì)劃就是搞清楚XUL是什么,什么地方要用XUL,以及怎么寫XUL?
先說(shuō)到這里,下一小節(jié)我來(lái)寫一些XUL的學(xué)習(xí)歷程。