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

作者: admin 分类: firefox 插件 发布时间: 2013-01-30 11:16 ė4,041 浏览数 6没有评论
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)

上一节写了一个Extension,添加了一个按钮在FF3的工具栏上。接下来我准备在这个基础上添加一个功能,点击按钮,读取本地磁盘上一个文件的内容,并显示出来。怎么做呢?用Javascript吗?因为我最终的目标是从服务器上下载文件,也可能会传输本地文件到服务器上,用Javascript访问本地文件有诸多限制,而且也无法完成复杂的功能。所以最好是能够调用我编写的 DLL那就最好不过了。怎么做呢?还是在Mozilla网站上找找看吧。

在Mozilla网站上看到,可以自己编写Component来完成一些自定义操作。需要首先安装Gecko SDK(现在叫XULRunner SDK),Windows上有两个版本,1.8是for FF1.5/2.0的,1.9是for FF3.0的,由于我机器上安装的是FF3.0,那么就先下载1.9吧,与FF1.5/2.0兼容的问题以后再说。

下载了XULRunner SDK 1.9,解压到本地后,在环境变量里配置了PATH到xulrunner-sdk的bin目录,以便可以在command prompt下直接运行xulrunner.exe。OK,环境配置完毕,下面来个写个小例子吧。Mozilla提供了一个短小精悍的例子程序,在这里:https://developer.mozilla.org/en/Getting_started_with_XULRunner

这篇文章一步一步教我们编写一个HelloWorld程序,写的很清楚。不过做完这个例子,我有几个疑问:
1、在上一节我们写的Extension中,chrome.manifest这个文件是放在根目录的(与chrome目录同级),为什么这里把它放在了chrome目录里面呢?能否保持和Extension相同?我简单尝试了一下,并修改了chrome.manifest里面content所指向的目录,然后运行了一下,什么都没发生,没有看到正常运行时所弹出的对话框,看来还是解析不正确,是不是xulrunner必须要求chrome.manifest在chrome目录下面呢?
2、application.ini中App节的ID,和Extension的ID(通常是一个GUID)有无关联呢?
3、调用xulrunner.exe以后,会产生两个目录:extensions和updates,这两个目录是干什么用的呢?

另外这里需要特别说明一点:在运行xulrunner去执行application.ini时,千万不能丢掉.exe,即不能写/>xulrunner application.ini,必须是/>xulrunner.exe application.ini,否则会弹出couldn't parse的错误提示,具体是什么原因我也不清楚。

另外,这里还有一篇关于xulrunner的教程,解释了一些概念性的东西:http://blogs.acceleration.net/ryan/archive/2005/05/06/1073.aspx

写完这个例子,感觉方向好像不太对,xulrunner好像主要还是做界面,怎么做组件呢?怎么访问本地磁盘文件、甚至系统注册表?在Mozilla的开发者页面上又看到一个东东:XPCOM,开头的一段介绍文字是这样的:

XPCOM is a cross platform component object model, similar to Microsoft COM. It has multiple language bindings, letting the XPCOM components be used and implemented in JavaScript, Java, and Python in addition to C++. Interfaces in XPCOM are defined in a dialect of IDL called XPIDL.

XPCOM itself provides a set of core components and classes, e.g. file and memory management, threads, basic data structures (strings, arrays, variants), etc. The majority of XPCOM components is not part of this core set and is provided by other parts of the platform (e.g. Gecko or Necko) or by an application or even by an extension.

大概的意思是说XPCOM类似于微软的COM组件概念,它可以定义一些接口,可以在JS、Java、Python以及C++中使用。哈哈,看来这个才是我想要的东西。OK,那接下来我就来研究一下这个东东吧。下一节争取能完成我一开始提到的功能。



只回答业务咨询点击这里给我发消息 点击这里给我发消息

王牌软件,兼职软件设计,软件修改,毕业设计。

本文出自 王牌软件,转载时请注明出处及相应链接。

本文永久链接: http://www.softwareace.cn/?p=148

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">


Ɣ回顶部

无觅相关文章插件,快速提升流量