使用FireBreath寫瀏覽器插件(一)

http://blog.csdn.net/chief1985/article/details/6719938

一. FireBreath介紹

    FireBreath是一個跨平臺和跨瀏覽器的插件開發框架,通過Firebreath寫的插件可以運行在windows,linux和mac上的IE,Firefox,Chrome,Opera,Safari等瀏覽器上。

FireBreath的主要開發者是Richard Bateman, 他工作在Facebook,FireBreath裏面使用了不少Facebook貢獻的代碼。Firebreath使用New BSD授權或LGPL授權,官網在http://www.firebreath.org, 代碼可以從https://github.com/firebreath/FireBreath下載。

    FireBreath適合如下場合:

1. 需要提供新的功能給js調用(擴展js功能)

2. 需要實現類似於Flash或media player那樣功能

3. 給Chrome寫Extension 

4. 其他非擴展瀏覽器外殼的功能的場合

    在IE上,我們可能經常會看到如下的工具條:


    google工具條屬於瀏覽器外殼部分的擴展,並不屬於ActiveX插件,而是屬於BHO(Browser Helper Object)。無論是ActiveX還是BHO,都是基於COM實現的。在瀏覽器中使用COM的好處是擴展能力超強,好被其他程序重用(例如QQ的聊天窗口的一部分就是用IE做的),壞處是可能導致啓動速度變慢(需要合理優化)。BHO可以實現很強大的功能,例如Chrome Frame就是利用BHO將Chrome嵌到IE裏面運行。Firefox實現了一套與COM類似的技術:XPCOM(Cross Platform Component Object Model),XPCOM雖然說是跨平臺,但整體來說還是弱於COM。

    在IE中還有一種擴展js功能的是ie external對象(http://msdn.microsoft.com/en-us/library/ms535246(VS.85).aspx),現在很多程序就是用這種方法擴展js功能,例如迅雷,QQ等。

    Firebreath現在主要是支持桌面系統的瀏覽器,還不支持Android,Iphone等平臺。Firebreath實現採用了boost庫,也使用了異常處理機制,這導致Firebreath在Android和Iphone等平臺移植時會稍微困難一點,不過網上已經有android版的boost庫。我曾經專門問過Richard Bateman是否有計劃支持Android,他表示暫時還沒計劃。其實在嵌入式設備上的簡單的做法是:參考Firebreath的架構,而不是使用其代碼,否則可能會出現效率問題。


發佈了7 篇原創文章 · 獲贊 6 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章