分类目录归档:Firefox extension

Firefox扩展开发经历和资料

最近在做个Firefox的扩展,收集了些资料。本来想写篇入门级的文章,现在感觉还是功力不够,略过了。

做这个扩展还是蛮累的。刚开始的时候,自己对ff的扩展是一片空白,连ff的扩展和插件都分不清。除了知道javascript之外,其它后来用到的xul,xpcom等都是一点都不了解。最好的开始是,先了解ff的开发框架,其次是xul,然后是xpcom。

xul的ui开发是个蛮烦琐的过程,由于没有找到IDE,只好用ff的开发扩展一个个的试xul的元素,看看哪些合适,还好之前有个ie的插件,ui已经做好了,否则更花时间。其实有个ide的话,应该很快就可以完成的,结果我花了2天时间来做个界面和它的验证,保存等等,真是痛苦的痛苦的经历。不过也是个锻炼吧,呵呵。界面其实也不复杂,就是需要一个个元素的试,还好有www.xulplanet.com,^_^。

在xul的开发中,需要显示和保存些信息,当时使用了rdf格式的文件保存,用到了ff提供的默认xpcom的函数,主要是看了别人开发好的扩展,剩了好多时间。不过还是有点困难,或许当时用纯xml会更好,呵呵。总的来讲,rdf还是蛮好用的。虽然第一次看起来很神秘,哈哈。

在扩展里面设置和修改快捷键是另外一个难点。事实上是用了一个小技巧,因为快捷键的响应函数需要一直存在的。一般情况下,快捷键的响应函数都是在窗体内部的,但是窗体关闭之后,设置的响应函数的指针也消失了,因为窗体本身消失了。所以关键是用一个一直存在的函数。这个扩展里面用了Components.classes[“@mozilla.org/appshell/appShellService;1″].getService(Components.interfaces.nsIAppShellService) .hiddenDOMWindow;用它来保存函数指针。

最后,还要开发自定义的xpcom,而且是要用到c++!!已经n年没有碰过的东西啊,寒….不过找到了一个vs2005的xpcom项目的wizard,哈哈哈哈。依葫芦画瓢做出了一个,要让ff重新注册做个xpcom还是有点麻烦,找了半天,发现只要删除{profile}/compreg.dat和xpti.dat之后,ff就会根据重新建一个。而在做好的xpi包中,需要在install.rdf加一个tag:<em:type>2</em:type>。

开发这个扩展其实是个蛮新鲜的体验,因为用到的技术都是之前没有接触过的(除了javasript)之外。当然,也经历过很郁闷的时间,最终还说挺过来了。

写下这些,如果正好有需要分享经验的朋友看到,需要交流的,请找ms_hqiu at msn.com。

xulplanet,mozila dev center Events Reference ,