Posted on 2008-09-02 01:27
leekiang 阅读(573)
评论(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