感谢支持
我们一直在努力

Linux上运行Mozilla平台小记

由于之前的项目决定在Linux上运行Mozilla平台,最后基于Mozilla开发基本应用。所以了解了一些Mozilla平台的开发。   虽然日后估计不会再用到了,当个人觉得还是很强大的一个平台,之前也看到过一个基于这个平台的企业应用,很不错。依赖Mozilla实现跨平台,并且可以用Linux+Mozilla实现个瘦客户端。小记如下:firefox 定制


一种是通过userChrome.css进行定制,可修改见面样式,还可以通过样式使某部分不显示


perf.js 是软件的默认配置,可以修改一些配置选项


另一种直接修改firefox源码,firefox完全通过xul和js编写的,所以修改firefox目录下的chrome/browser.jar文件


firefox 扩展


firefox扩展的一般目录结构


ext/


chrome/


content/


main.xul #按照chrome.manifest中的设定,存放相应的界面xul,js脚本之类的资源


chrome.manifest  #chrome方式资源定位的描述文件,定义了如何通过chrome资源定位访问到指定文件


install.rdf   #描述扩展,如作者,厂商,版本,扩展的类型(有主题,程序),要求的firefox版本


当开发完成之后,就可以将ext整个目录用zip打包,修改扩展名为xpi,就可以让firefox安装使用了。


main.xul


是用来描述界面的xul,使用xml语言,其中也可以嵌入js脚本


*.js


主要的程序逻辑功能还是放入js文件当中,然后在main.xul中进行引用


chrome.manifest


可描述多种类型如:content, overlay, locale


content: 资源文件


overlay: 覆盖原有某部分内容,如覆盖firefox浏览器的状态栏,添加扩展所需的内容。


locale: 国际化资源的定位


国际化


采用xml的方式进行国际化。


首先需要在chrome.manifest当中,指定locale资源位置,然后通过*.dtd和.properties文件读取本地化的文本


在xul中引用的国际化文本,使用dtd文件


在程序中,如js脚本中引用国际化文本,使用properties文件


mozilla 平台开发


firefox和thunderbird等应用程序,全是基于mozilla平台进行开发的。mozilla平台主要使用xul,xpcom,npruntime等方式进行开发。


xpcom和npruntime都是对mozilla平台的进行扩展,通过这两种方式可以使用c/c++访问系统资源,向mozilla程序提供接口。


xpcom组件趋向于被npruntime取代。


还可以使用Mozilla embedding APIs将mozilla组件内嵌入其他应用程序当中。


mozilla 应用程序


一般目录结构如下:


app/


chrome/


content/


main.xul


locale/    #国际化资源存放位置


en-US/


chrome.manifest  #同样是chrome资源定义


defaults/


preferences/


prefs.js  #应用程序默认配置,修改xulrunner的默认配置


extensions/


application.ini   #应用程序配置描述,作者,mozilla要求版本等


应用程序与firefox扩展目录结构基本相同,因为firefox就是基于mozilla平台开发,扩展机制也同样是利用mozilla平台提供的。


应用程序使用xulrunner运行: xulrunner application.ini


xpcom 组件:


通过开发xpcom组件,给于应用程序访问系统资源的方法,以及其他用来扩展xulrunner应用程序的功能。


*.idl 描述接口,所有接口都继承自nsISupports,描述中还需要uuid,用来唯一标识这个接口,使用uuidgen程序生成。


xpidl 程序可以通过idl文件生成,c++头文件和实现文件,还有xpt文件


*.xpt 是接口的二进制描述文件。提供xulrunner访问接口的速度。


*Module.* 是用来实现Module的接口,以让xulrunner调用该组件


通过NS_IMPL_NSGETMODULE和nsModuleComponentInfo结构,告知xulrunner,组件对象的注册。


组件安装


最终将生成*.so和xpt文件放入xulrunner/components目录下,如果存在components.list文件,则需要添加文件。


组件是否注册会在应用程序的用户配置目录下生成compreg.dat文件


!!当出现注册不上时,可尝试删除compreg.dat文件!!


使用xpcom组件:


var c = Components.classes[“@ccoss.com/desktop;1”].createInstance(); //获得组件实例


c = c.QueryInterface(Components.interfaces.nsICcoss); //要使用的接口,因此一个组件可以实现多个接口

赞(0) 打赏
转载请注明出处:服务器评测 » Linux上运行Mozilla平台小记
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏