MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

firefox扩展开发技术

Posted on 2008-09-02 01:27 leekiang 阅读(567) 评论(0)  编辑  收藏 所属分类: firefox
1,XPCOM

XPCOM(Cross Platform Component Object Model)是一种跨平台组件模型,是Mozilla技术的核心。其原理与微软的COM技术类似,但与COM不同的是,XPCOM是一种跨平台技术,并支持多种语言绑定(Language Bindings)。也就是说,我们可以使用C++、JAVA、JavaScript、Python、Ruby、Perl等语言来编写组件。而XPCOM的接口(Interface)是用一种叫做XPIDL的IDL(Interface Description Language)来定义的。1

XPCOM 自身提供了一套核心的组件和类,用于诸如内存管理,线程,基本数据结构(strings, arrays, variants)等 。但是大部分的XPCOM组件并不是这个核心库提供的,而是由很多第三方的平台(例如Gecko或者Necko)提供,或者由一个应用,甚至一个扩展提供。

2,RDF

教程http://www.w3school.com.cn/rdf/

3,开发插件实在是很痛苦的一件事情,因为他需要用到Firefox的chrome系统,而每次更新了代码之后,都需要重新载入chrome才能起作用。 一般情况下要重启chrome就需要重新启动firefox,还好有人已经发现这种痛苦,所以开发了一个Extension Developer Manager,里面提供了好几个工具,用的最多的是reload chrome,用来在不重启firefox的情况下,重新载入chrome,第二个是javascript shell,他可以访问任意一个当前的firefox窗口。而要完成插件开发,一般还要用到Console,因为很多调试信息都需要通过这看,如果没这玩 意,那估计每次都得用alert了。至于DOM Inspector一般用不上,因为如果你要象greesemonkey那样,获取当前页面的HTML DOM的话,一般都只能通过事件来实现,然后hack到她的appcontent里面,这东西在DOM Inspector里面没有,所以,你通过这种方式修改了DOM树,通过DOM Inspector是看不出来的,而为了验证你有没有修改成功,现在我的方法就是靠javascript shell。
        关于DOM,我搞了足足两天,才算搞出个所以然来,由于firefox是用XUL写的,而XUL也定义了DOM,所以,一般情况下你在扩展里头,或者 javascript shell里面通过document获取的仅仅是XUL的DOM,要获取browser里面的DOM,我现在探索出来的有两种,一种是 greesemonkey那样,用事件,每次都监察DOMContentLoad事件,这个方法很危险,例如如果一个网页他有多个frame,那么这个事 件就会发生多次,而由于greesemonkey只是在加载的时候用user script对DOM做一次处理,所以这个问题不是特别大。不过,如果我要做的是能够多次操作DOM树,所以,就必须要得到当前窗口的当前正在显示的 DOM,为了获取这冬冬,我足足用了2天,google了所有能想到的关键词,把XUL planet和MDC上面的文章都翻了个遍,最后终于在moznet的irc上面问到人了,原来要得到这东西根本不需要用事件,只要通过 content.document就可以得到了。实在不容易啊。

上面全部抄自http://blog.csdn.net/nickcen/archive/2006/07/15/923252.aspx

4,用7zip压缩为zip,然后改后缀为xpi


系列文章http://hi.baidu.com/lovemyselfbest/blog/item/0bf363ee1ed5e1feb3fb9546.html

http://www.blueidea.com/tech/web/2007/4979.asp

基于 Mozilla 的扩展开发

http://xuming.net/2008/07/firefox-extension-2.html

http://www.blueidea.com/tech/web/2007/4979.asp


只有注册用户登录后才能发表评论。


网站导航: