firefox扩展开发主要有两种模式:

1.Add-ons SDK扩展,sdk的特点是简单,适合初级玩家。这种开发方式最快的入门方法就是阅读mozilla的官方文档

2.bootstrap扩展,这种扩展开发方式从无到有完全手动,需要学习firefox的界面描述语言,适合高级玩家。 可以参考IMB developwoker上的一篇入门文章

本人属于初级玩家,所以本文主要描述使用Add-ons SDK建立一个具有基本功能的扩展。


1.环境篇

下载python2.5、2.6或者2.7,firefox,Add-ons SDK 。确保python在系统的path中。解压下载的sdk的zip文件,在命令行模式下运行:

cd add-ons 
bin\active
#如果active(主要是初始化一些变量)运行成功,会改变当前的命令行前缀,类似如下:
(C:\Users\mozilla\sdk\addon-sdk) C:\Users\Work\sdk\addon-sdk>
#接下来继续在当前命令行测试环境是否ok,运行如下命令
cfg
#第一行的输出应该是:Usage: cfx [options] [command]

到此为止,扩展开发环境就算ok了。如果遇到问题,请浏览官方文档


2.工具篇

(1) 用cfx init产生扩展的基本框架

工欲善其事,必先利其器,好的工具能够大幅度提高开发效率。我要介绍的工具是cfx。

mkdir my-addon
cd my-addon 
cfx init
* lib directory created
* data directory created
* test directory created
* doc directory created
* README.md written
* package.json written
* test/test-main.js written
* lib/main.js written
* doc/main.md written
Your sample add-on is now ready for testing:
try "cfx test" and then "cfx run". Have fun!"

(2)实现扩展的具体逻辑

扩展的具体逻辑在lib/main.js中。假如我们的想在浏览器的工具栏上实现一个button,点击后在新的tab页面中打开www.baidu.com。具体的逻辑代码如下:

var widgets = require("sdk/widget");
var tabs = require("sdk/tabs");
var widget = widgets.Widget({
  id: "mozilla-link",
  label: "Mozilla website",
  contentURL: require("sdk/self").data.url("icon-16.png"),
  onClick: function() {
    tabs.open("http://developer.mozilla.org/");
  }
});

当然你也可以自定义button的icon,只需要替换data目录下的icon-16.png,icon-32.png,icon-64.png


(3)浏览器中测试

使用cfx run在firefox中测试开发中扩展,cfx run命令会启动firefox并安装该插件。


(4)打包

使用cfx xpi打包插件为xpi包。打包后的xpi文件就可以直接使用浏览器安装了。


profile是firefox的高级概念,开发者在扩展开发过程中一般使用不同的profile模拟不同的浏览器环境,用于测试扩展的兼容性。

什么是profile

profile是firefox用户数据的集合,包括书签,设置信息,扩展,密码信息,浏览历史等数据。

如何创建新的profile

使用firefox的命令行创建新的profile,该命令要求所用的firefox实例都关闭:
firefox.exe -P

会打开如下窗口:

firefox profile窗口


如何使用新的profile


使用命令行启动firefox,假设上一步创建的新的profile文件为TestProfile,可以使用如下命令使用新的profile启动firefox浏览器
firefox.exe -P  “TestProfile”