开始 FireFox 扩展开发之旅

什么是 Firefox 扩展?

扩展添加新功能给 Mozilla 应用程序如 Firefox 和 Thunderbird 。从工具栏按钮到全新特性,扩展都可以做到。它们允许应用程序根据每个用户的个人需求定制额外功能,同时保持了应用的下载大小。

摘自扩展页面

正如引用文本所说的,扩展是一个小应用,用来给一个或多个 Mozilla 应用程序添加新东西。本教程重点关注 Firefox 上的扩展开发,至于其他应用程序如 Thunderbird、Seamonkey 和 Flock 上的扩展开发,原理上是一样的(或说非常接近)。

值要一提的是,附加组件与扩展的定义是有区别的。所有的扩展都是附加组件,但附加组件还可以是主题、插件或语言包。本教程是关于扩展开发的,但主题和语言包的开发方式也和扩展类似。插件则完全不同,但这里不涉及。你可在插件页上读到更多插件开发的内容。

Firefox 提供了一个丰富、有弹性的架构,允许扩展开发者添加高级特性、定制用户体验,甚至完整地替换、去除浏览器部分功能。Mozilla 的扩展库(AMO)里拥有大量扩展,提供各种各样的功能:内容过滤AdBlock PlusNoScript)、web 应用交互Delicious BookmarkseBay Companion)及 web开发DOM InspectorFirebug。这些都是高级复杂的扩展, 接下来你将要学习的是,创建这样 (Glaxstar 实际上拥有以上所列扩展中的 3 个)的扩展最需要什么。

扩展现在有 3 种存在形式: 附加组件 SDK 扩展 (也叫 Jetpacks)),引导扩展及传统扩展。 如果你刚开始开发附加组件,则附加组件 SDK 是个好办法,在它基础上可以快速创建简单扩展。本教程重点关注传统扩展,它们创建方式并不一样。Bootstrapped 在复杂度上,要比传统扩展更进一步,所以我们在尝试它们以前,你应该先学习本教程。

我们先从分析一个非常简单的扩展开始我们的教程。

Hello World 扩展

我们的样例扩展通常面向现代版本的 Firefox,但多数在较早的 Firefox 版本上也能运行。

我们现在从一个基本的 ”Hello World“ 扩展开始。首先点击下述链接安装。

安装 Hello World

点击链接会触发安装或文件下载操作,这取决于 web 服务器上文件所使用的内容类型。触发安装的正确内容的类型是 application/x-xpinstall。在这个维基的例子里,我们正确设定了内容类型,因此会有一个安装窗口出现。

如果内容类型设定对了,你可能会收到通知说,Firefox 不允许此网站安装扩展。这是一种安全策略,阻止网站未经用户允许安装扩展。这是必要的,因为恶意扩展的危害不一定输于恶意软件:窃取数据、擦除或替换文件,导致意外的情况。AMO 是唯一预先允许了的网站,因为在AMO 上发布的所有扩展都经过审核,其中包括安全性检查。

在文件下载完后,将它拖入 Firefox 内容区域,然后安装就会开始。

你会看到一个窗口,提示说你将要安装一个扩展,还会有一些作者名称等附加信息。你会看到消息说此扩展的作者未经认证。只有使用数字证书签名的扩展才能认证作者资格。签名过的扩展很罕见,但后续我们会聊到如何给它们签名。

点击现在安装按钮。扩展安装完成后,会要求你重启浏览器。安装、卸载、启用、禁用附加组件都需要重启来完成,例外的是 NPAPI 插件、附加组件 SDK 扩展以及引导扩展。如果你是在创建一个操作其它扩展或主题的扩展,这一点非常重要,请记在心里。

安装完成后,观察 Firefox 的主窗口,看看你是否注意到有什么不同。

看到了吗?主菜单上有一个新菜单,菜单名称是 ”Hello World!“。

如果你打开菜单,点击菜单下的菜单项,你会看到一条友好的提示消息(某种定义下的”友好“),点击 OK 按钮关闭它。

这就是这个扩展的功能了。现在让我们深入查看。

扩展内容

你可能会注意到你安装的扩展文件名称是 xulschoolhello1.xpi。XPI(发音为 "zippy")文件代表跨平台安装包,因为同样的安装包文件在 Firefox 支持的所有平台都能使用。XPIs 其实仅仅是 ZIP 文件,但是  XPI 载入时,Firefox 认出 XPI 扩展,继而触发安装过程。

要查看 XPI 文件,你首先需要下载它,而不是安装它。如果点击链接或按钮导致服务器触发安装,那么你需要右击安装链接,选择”保存链接为...“选项。

将 XPI 文件解压到方便的目录里。在 Linux 或 Mac OS 下执行以下命令解压文件:

unzip xulschoolhello1.xpi -d xulschoolhello1

在 Windows 下,你可以将文件扩展名从 xpi 改成 zip,或者用 ZIP 工具直接打开文件然后解压。

你应该能看到如下的文件结构:

  • xulschoolhello1
    • chrome.manifest
    • install.rdf
    • content
      • browserOverlay.xul
      • browserOverlay.js
    • skin
      • browserOverlay.css
    • locale
      • en-US
        • browserOverlay.dtd
        • browserOverlay.properties

如此简单的东西却有这么多文件!下一章中,我们会探究这些文件,看看它们做了什么。

本教程由 Appcoast 慷慨捐献给 Mozilla。

文档标签和贡献者

标签: 
向此页面作出贡献: ziyunfei, chenxsan, xiaobo, donghao526
最后编辑者: ziyunfei,