Firefox 的 Jetpack 可以让我们很轻松地创建 Firefox 插件,仅通过已掌握的前端技能(HTML/CSS/JS),估计让人更兴奋的一点—— Jetpack 还集成了 jQuery 框架。

Adobe Air 也好,Web OS 也好, Jetpack 也好,至少让我们肯定一点,前端的价值将会在机遇中越来越大的被展现。

下面让我们一起来看看如何一步步创建你的第一个 Firefox 的 Jetpack 扩展

第一步:安装 Jetpack 插件

Jetpack 插件地址:https://jetpack.mozillalabs.com/install.html

安装完成 Jetpack 插件后,你就可以通过在地址栏中输入 about:jetpack 来访问 Jetpack 本地界面了。

about:jetpack

第二步:创建 planabc.js 文件。

planabc.js 的详细代码为:

jetpack.statusBar.append({
    html: '<img src="http://www.planabc.net/favicon.ico"/>',
    width: 16,
    onReady: function(widget){
        $(widget).click(function(){
            jetpack.tabs.focused.contentWindow.location = "http://www.planabc.net/";
        });
    }
});

jetpack.statusBar.append 将执行 JavaScript 对象(该JavaScript 对象有四个属性:html、url、width 和 onReady)。

  • html 属性:定义初始的 HTML,将显示在状态栏。此样例中,将显示一个简单的 IMG 元素。
  • url 属性:定义将在状态栏上显示的外部 HTML 内容的 URL。此样例中,未使用该属性。
  • width 属性:定义内容在状态栏上的宽度(单位:像素)。此样例中,定义为 16 像素,也就是 IMG 元素本身的宽度。
  • onReady 属性:定义被调用的函数(一旦状态栏被创建,此函数将会被调用)。由于 Jetpack 集成了 jQuery 框架,所以可以直接使用 jQuery 的属性和方法。在此样例中定义了这样一个函数,当点击该 Jetpack 扩展时,我们将修改 jetpack.tabs.focused.contentWindow.location 属性为 http://www.planabc.net/jetpack.tabs.focused.contentWindow 对象相当于 window 对象,你可以访问通过 JavaScript 访问网页。

第三步:测试 planabc.js 代码。

通过在地址栏中输入 about:jetpack 访问到 Jetpack 本地界面,点击 Develop 标签,然后将 planabc.js 文件中的代码拷贝到页面上的输入框中。点击 “try out this code” 按钮,你将会看到一个新的 icon 出现在 Firefox 窗口的右下角。

Develop 非常方便在代码部署前,在 Firefox 中测试你的代码。

Develop

第四步:部署 Jetpack 扩展。

创建一个简单的页面,在页面的 HEAD 元素内添加如下的 LINK 元素:

<link rel="jetpack" href="planabc.js" name="怿飞的博客"/>

HTML 文件源码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Mozilla Jetpack 案例</title>
        <link rel="jetpack" href="planabc.js" name="怿飞的博客"/>
    </head>
    <body>
        <a href="http://www.planabc.net/2009/10/13/build_firefox_extensions_with_jetpack/">《如何创建 Firefox 的 Jetpack 扩展》 </a>
    </body>
</html>

最后,将 HTML 文件和 planabc.js 文件都上传到服务器。

第五步:安装 Jetpack 扩展。

在 Firefox 中浏览该 HTML 页面时,Jetpack 插件将会在屏幕的最上方显示一个安装条,点击 “install” 按钮。将会提示安装不受信任的特性,点击 “I know what I’m doing. Install It!” 按钮。

安装完成和第三步测试一样,将会看到一个新的 icon 出现在 Firefox 窗口的右下角。如果此时你发现状态栏有2个相同的新 icon,那意味着原先的测试代码依然还在 about:jetpack 页面的 Develop 标签页中,清空输入框的代码即可消除。

返回到 about:jetpack 页面,点击 Installed Features 标签,将在列表中显示有新安装的 Jetpack 扩展。

测试Demo:http://www.planabc.net/lab/jetpack/planabc/



共有15 条评论

  1. 1. 头像 rainoxu

    第一个来顶,回头试试~~

  2. 2. 头像 怿飞

    以后每天讲解一个Jetpack 扩展案例,作为推广^^

  3. 3. 头像 渔隐

    顶,板凳,每天一个啊,期待~~俺监督你!

  4. 4. 头像 Robin

    ” jetpack.tabs.focused.contentWindow.location 对象相当于 window 对象 ” 这句应该是 “jetpack.tabs.focused.contentWindow 对象相当于 window 对象”吧。
    试了一下貌似挺简单呀,看看api能做出什么玩意来。谢谢怿飞的教程呀 :D

  5. 5. 头像 怿飞

    @Robin 是的,笔误,已经更正,谢谢提醒。

  6. 6. 头像 老田

    Jetpack和Chrome的扩展开发差不多,感觉是在仿效Chrome。Firefox的扩展,还是用XUL+JavaScript功能更强大。

  7. 7. 头像 noway

    如何开发扩展给公众安装呢?

  8. 8. 头像 netwjx

    ff扩展传统的开发大概是怎么个路线呢,我只大概了解访问xpcom的

  9. 9. Time Machine» Blog Archive » We are Catalysts

    [...] Bespin ,它的图标很明确的描述了它的功能:云代码。说到这里不得不提,很多地方将云的概念喊得震天动地,可是否做出过几例真正贴近用户并且成功云应用呢?Bespin旨在开发一个基于web的代码编写平台,从而提高开发者效率。 Bespin目前提供了文件管理,代码编辑器,命令行控制台和代码预览等功能。现在Bespin还不能用于生产环境,但这只是时间问题。 Bespin 界面 Jetpack ,想当年我想给Firefox写一个饭否的小插件,问了几个同事,说除了我现在掌握的前端技术外还得学习XUL语言,我当时哪个蒙呀。虽说有个FF扩展的生成向导的eclipse插件,但是想做出我哪个小玩意还是要费一番周折的,最后还是放弃了。直到出现了Jetpack,真有相见恨晚的感觉。它可以像写web应用那样简单的开发出像模像样的FF扩展,怿飞这里已经有了详尽的描述和代码示范,大家可前去围观。 现在该这只可爱的小狐狸Personas了,我着实不知道这个扩展的功能和它的logo有什么联系,如果非要找共同点的话,那就是“可爱”。如果还有人把Firefox样子丑陋作为不去使用它的借口,那么Personas就是最好的武器。如果你还在羡慕Chrome绚丽的皮肤,那么有了Personas就可以让他们羡慕你,Personas不但提供了上百种已有皮肤,而且你还可以定制自己的皮肤,并且分享给大家使用,做法只是简单的提供一张头部和一张底部的图片而已。赶快给自己的FF穿上漂亮的衣服吧。 秀一下我FF的皮肤 下来该Prism了,它算是我使用最早的Mozilla labs里的应用了,大概是在06年吧。它的功能很简单,就是将你的web app拿出来变成一个desktop app。不用打开浏览器,其它它就是一个微型的FF。它可以使你的web app支持拖拽,离线浏览等功能。比如你可以将你的gmail用Prism变成一个桌面应用。 第五个来介绍一下Ubiquity这个小家伙,它的口号是“不要光在网上冲浪,去命令它!”。 Ubiquity是这样个东西:你不用打开你的电子邮件网站去发送email,你不用打开翻译软件就能进行文字翻译,你不用打开任何twitter客户端或者网站就可以发牢骚,你不用。。。 这一切只要你摁下你设定的快捷键,并输入简单的几个字母命令就可以轻松完成。这有点类似于我们所谓的“框计算”,得,还是别玩概念了。大家看看我以前改造的一个用Ubiquity发饭否(期待饭否的回归)的小命令就明白了。下面截图是我用Ubiquity翻译文字的实况: [...]

  10. 10. 头像 汽车坊

    秀一下我FF的皮肤 下来该Prism了,它算是我使用最早的Mozilla labs里的应用了,大概是在06年吧。它的功能很简单,就是将你的

  11. 11. Chinesefeng » Blog Archive » 通过存取cookie和dom操作实现页面换肤

    [...] 《如何创建 Firefox 的 Jetpack 扩展》 [...]

  12. 12. 头像 雅趴网

    受教了。人生也有涯,知也无涯啊。。

  13. 13. 头像 chongtu

    学习了,感谢分享!

  14. 14. Firefox 的 Jetpack 扩展案例分析:Gmail 邮件提醒 | 前端开发吧

    [...] 《如何创建 Firefox 的 Jetpack 扩展》 [...]

  15. 15. We are Catalysts | 田园牧笛

    [...] Bespin 界面 Jetpack ,想当年我想给Firefox写一个饭否的小插件,问了几个同事,说除了我现在掌握的前端技术外还得学习XUL语言,我当时哪个蒙呀。虽说有个FF扩展的生成向导的eclipse插件,但是想做出我哪个小玩意还是要费一番周折的,最后还是放弃了。直到出现了Jetpack,真有相见恨晚的感觉。它可以像写web应用那样简单的开发出像模像样的FF扩展,怿飞这里已经有了详尽的描述和代码示范,大家可前去围观。 现在该这只可爱的小狐狸Personas了,我着实不知道这个扩展的功能和它的logo有什么联系,如果非要找共同点的话,那就是“可爱”。如果还有人把Firefox样子丑陋作为不去使用它的借口,那么Personas就是最好的武器。如果你还在羡慕Chrome绚丽的皮肤,那么有了Personas就可以让他们羡慕你,Personas不但提供了上百种已有皮肤,而且你还可以定制自己的皮肤,并且分享给大家使用,做法只是简单的提供一张头部和一张底部的图片而已。赶快给自己的FF穿上漂亮的衣服吧。 [...]

发表评论

(必填)

(必填,会为您保密)

评论仅支持“a、abbr、strong、em、blockquote、code”几个简单的标签