如何编写Firefox浏览器插件,一个下载百度空间所有文章的插件
2009-09-11 15:28 阅读 评论 1.开发Firefox 插件的官方文档。到firefox主页上去找就可以找的到。他们的文档还是很详细的,不过像我这种英语水平的看起来不是很容易。
https://developer.mozilla.org/En/Extensions/Firefox
http://kb.mozillazine.org/Extension_development
最主要的参考资料都在这个页面的链接里面了
https://developer.mozilla.org/En/Documentation_hot_links
常见功能的例子
https://developer.mozilla.org/en/Code_snippets
2、先浏览一遍上面的网页,就清楚了。我也简单的介绍几个概念吧。
(1)XUL 这个是用来编写插件界面的语言,类似HTML,如果你会HTML 那么一切都很简单了。
(2) javascript 没什么好说的了,网页上是这样用,插件里也是这样用。
就是我写的时候需要不时参考一下firefox的javascript 手册,忘记了什么查查很方便的。
Core JavaScript 1.5 Reference - MDC https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference
Core JavaScript 1.5 Guide - MDC https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide
调试时,直接在firefox打开 xul文件,然后在firefox的“错误控制台”中可以看到错误的输出吧。当然用firebug可能也有帮助。不过我感觉调试还不是很方便,大多时候都是用alert()来了,我也不知道有什么好办法没有,有的可以告诉我一下。
(3)XPCOM 类似windows上面的COM概念,就是定义了环境无关的接口标注,好像可以用c 啊 等javascript来写,然后按他定义的标注开放接口别人就可以用了。不过我是没写国了。Firefox的各种功能也都是封装成一个一个的XPCOM 的,所以一要在插件里面调用firefox提供的功能就是要先 请求 服务然后接口什么的。和windows的COM有点类似。一开始不知道,找了半天还找不到怎么在自己的脚本里面调用firefox的功能借口的。给个例子,比如要查找本地目录是否存在和创建他,代码是这样的
verifyDownloadDir: function (fileName) {
var file = Components.classes["@mozilla.org/file/local;1"]
.createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(fileName);
if(!file.exists() || !file.isDirectory() ) { // if it doesn't exist,
// create
alert("指定的路径不存在或者不是一个目录!");
return false;
}
try {
file.append("百度空间文章");
file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777); //0777可读可写可执行,参考参数说明https://developer.mozilla.org/en/PR_Open#Parameters
downloadPath = file.path; // 开始保存的时候,文件放在这里
file.append("data");
file.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777);
// throw "ddd";
}
catch (e) {
alert("创建子目录失败!");
return false;
}
return true;
},
上面说的Code_snippets里面也有很多例子了。另有
XPCOM API Reference - MDC https://developer.mozilla.org/en/XPCOM_API_Reference
3、编写一个实际的插件,用下面这个向导生成一个小例子,然后再这个基础上面修改就行了
http://ted.mielczarek.org/code/mozilla/extensionwiz/
调试的时候可以按照 readme.txt的说明来配置一下环境。
运行里面的 build.sh 即可以生成一个 *.xpi 插件包了,其实就是个zip文件,就可以提供给别人呢安装使用了。
后面的事就自己来咯,参考别人的插件是怎么写的也是个不错的主意。
我写个一个下载百度空间里面所有文章的插件。现在可以把我以前那个百度空间的文章下载下来打包保存咯。呵呵
下载下载,把后最名改为widebright.xpi,然后拖到firefox里面去就会提示时候安装插件了。装完重启,在“工具” 菜单里面就可以找到一个 绿色的"widebright"的小插件“的项了。
https://sites.google.com/site/widebright/firefox-bai-du-kong-jian-xia-zai-cha-jian/widebright.xpi.zip
运行之后是这样的,还不错,呵呵