日期:2014-05-16  浏览次数:20661 次

firefox插件开发的例子
求乌班图下firefox插件开发的一个简单例子(demo)
------最佳解决方案--------------------
http://www.cppblog.com/epubcn/category/8842.html
------其他解决方案--------------------
可以使用Add-on Builder自己生成一个
https://addons.mozilla.org/en-US/developers/tools/builder
------其他解决方案--------------------
官方的例子
https://developer.mozilla.org/en/Building_an_Extension
------其他解决方案--------------------
https://developer.mozilla.org/en/Building_an_Extension
------其他解决方案--------------------
1楼的那个链接我有文档,他是说的firefox的扩展开发吧

------其他解决方案--------------------
http://www.toceansoft.com/bbs/forum.php?mod=viewthread&tid=98



相信在firefox的插件开发的人数不多,在接下来的时间里向大家一一讨论关于firefox在linux及windows两个平台插件的开发。
firefox的插件分两种类型,一种extension,一种是plugin.两种是完全不同的两个东西。extension相对来说简单很多,用的主要是XUL,只是xml的一个变相。而plugin相对来说复杂一些。具体的官网说明如下https://developer.mozilla.org/en/Gecko_Plugin_API_Reference
大家不明白的地方再交流!!
 





接下开谈谈plugin的工作原理及相关的规范吧!
一、        插件的标准
1、在windows平台,火狐的插件是以动态库形式(dll)存在的,并只去识别在其安装目录下plugins文件夹下的dll;
2、dll的名是以8.3原则来命名的,即其名字所包含的字符不超过8个字符且以dll结尾的文件,还有一个规定就是其名字必须以np开头,例如:npXXX.dll,而XXX不超过六个字符;
3、dll是属于MIME(一种标准)类型,要不火狐浏览器不认识他;
4、dll导出的函数必须是NP_GetEntryPoints、NP_Initialize、NP_Shutdown是这三个,这是火狐浏览器能够识别的在个接口,具体说明在插件的生命周期中说明。
二、        插件的生命周期
1、        第一次打开含量有插件的页面时,浏览器最先调用NP_GetEntryPoints作为调用插件的入口,此方法也只在第一次加载插件时调用。
2、        调用NP_GetEntryPoints后,浏览器会调用NP_Initialize初始化插件,NP_Initialize只在第一次调用时被浏览器调用,与NP_Initialize配对的是NP_Shutdown,NP_Shutdown是在关闭了所有含有该插件的页面后被浏览器调用,在生命周期内也只被调用一次
3、        调用NP_Initialize后,浏览器会调会NPP_New来创建一个插件实例,每打开一个页面都会调用NPP_New一次来创建一个插件实例,与NPP_New配对的是NPP_Destory,在每关闭一个页面都会调用NPP_Destory来释放NPP_New创建的实例
4、        调用NP_Initialize后,一般会调用NPP_SetWindow来调置窗口,对于没有窗口的插件当然不用调用。
注:火狐插件开发的sdk划分为两类接口,一类是与插件相关的,以NPP或者NP开头的;一类是与浏览器相关的,以NPN开头的。
三、        页面调用插件的方式
1、        通过object方式调用:与IE调用ActiveX控件的方式一样的,不同的是IE调用ActiveX控件是通过ClassID来标识的,而火狐的控件是通过MIME的值来标识。
2、        通过embed方式调用:与object方式类似,但操作方面简单一些
四、        插件与页面的信息传递
插件与页面的信息是通过插件的接口与JS进行信息传递。在火狐插件有一类接口可以直接读取页面的JS函数,并从函数中获取相应的值或者调置相关的值。




注意的是先把windows平台讲完再去讲linux平台下的,除了编译环境不同外,所使用的技术是一样的!!







转自:http://huandu.me/2010/02/11/595/

------其他解决方案--------------------
【原创】我的Firefox插件开发之旅(1)——从零开始

【原创】我的Firefox插件开发之旅(2)——XUL是什么?

【原创】我的Firefox插件开发之旅(3)——我的第一个扩展

【原创】我的Firefox插件开发之旅(4)——XULRunner的一个例子

【原创】我的Firefox插件开发之旅(5)——编译和测试第一个Plugin例子:npruntime

【原创】我的Firefox插件开发之旅(6)——FF插件的一些基础知识

【原创】我的Firefox插件开发之旅(7)——为插件添加和脚本交互的能力

【原创】我的Firefox插件开发之旅(8)——插件的安装与更新
------其他解决方案--------------------
上面这个很详细啊!