Firefox extension开发实战

原创 2010年06月06日 17:47:00

    开始写文章之前,先自我检讨一下自己的无知。

    Firefox是开源的,地球人都知道。在接触现在的项目中FF扩展的开发之前,我居然一直都认为FF是Java开发的(以前一直都把java和开源划上等号了)。现在终于明白,有很多开源项目像FF一样,都是C/C++开发的,有大家熟知的Mysql、PHP等。真是一个等级错误啊,宛如当年我认为移动存储设备只有U盘和移动硬盘一样,其实还有SD卡、MINI-SD卡、TF卡、CF卡、MMC卡等,愚昧啊。。。

 

    OK,废话到此为止,让我们进入正题吧。本文章分六部分:

    1.FF extension总体认知

    2.开发环境搭建

    3.开发实例(自定义右键子菜单)

    4.程序发布

    5.开发心得

    6.技术参考

 

    (一)FF extension总体认知

    FF是基于mozilla内核的,其浏览器引擎功能主要由C语言实现,但其浏览器界面及其界面上的相关操作都是由JS和XUL完成的,这就是FF的强大之处,同时它也为大家提供了很好的扩展机制。

    FF扩展的开发目录结构:

    --content

       --[main JS&XUL files]

    --locale

       --en-US

          --[some dtd or properties files]

       --[other languages]

    --skin

       --[some css files or pictures]

    --defaults

       --preferences

    --components[可选]

    --chrome.manifest

    --install.rdf

    --install.js[可选]

 

 

    FF的工作方式:

    对于任何一种新的开发语言或环境,大家通常都试图去寻找程序的入口点。可以很负责任地跟大家说,任何编译型(解释型程序)开发语言的程序都有类似C中的Main函数、Java中的主类(public static void main函数)、C#中的入口函数(static void/int Main)等作为程序入口。

 

    本实例中的JS程序加载入口:

   

 

    XPCOM简介:

 

    (二)开发环境搭建

    如果大家对FF extension的文件目录结构非常熟悉,我们当然可以不使用任何IDE,一样可以完成火狐扩展的开发工作。不管是否使用IDE,都建议大家使用ant(对,就是传说中的Java编译工具)来编译管理FF扩展工程。

    下面跟大家介绍两种常用的FF extension IDE。二者各有优缺点,大家可以根据自己的爱好来选择。

    1.Foxbeans(NetBeans)

 

    2.Spket

    这是官方推荐的FF extension开发工具,之所以将它放在第二位,是因为它的开发方式是半自动化的:它有良好的函数提示功能,但需要借助Venkman等调试工具进行调试,需要手动打包部署。

 

    关于Spket的破解方法,请参照我的前一篇文章:

    http://blog.csdn.net/wirror800/archive/2010/05/29/5633172.aspx

 

    好在Spket新建的FF extension工程中提供了一个基本的build.xml文件。我们可以修改这个build.xml文件,然后使用ant来编译整个项目。另外,开发过程中可能需要频繁编译工程,我们可以写一个简单的bat文件来实现快速编译。

   

    (三)开发实例(自定义右键子菜单)

    现在想实现一个功能,在本站点的某个Iframe中,修改FF的ContextMenu。

    完成这样一个功能,我们需要开发两种代码:xul和js。

    添加右键菜单项的XUL:

   

    实现右键菜单自定义的JS:

   

    然后在程序载入的时候,调用zoiqTab.initOverlay()方法:

   

    (四)程序发布

    如果大家对FF extension的文件目录结构非常熟悉,我们当然可以不使用任何IDE,一样可以完成火狐扩展的开发工作。不管是否使用IDE,都建议大家使用 ant(对,就是传说中的Java编译工具)来编译管理FF扩展工程。

    程序发布目录结构:

    --chrome

        --ffDemo.jar

       {

        --content

           --[main JS&XUL files]

        --locale

            --en-US

               --[some dtd or properties files]

            --[other languages]

        --skin

            --[some css files or pictures]

        }

    --defaults

       --preferences

    --components[可选]

    --chrome.manifest

    --install.rdf

    --install.js[可选]

 

 

    (五)开发心得

    1.阅读在线MDC文档

    2.尽量利用已有的FF内建函数来完成一些功能,这样可以减少出错的机会。内建函数,可以参照chrome://browser/content/brower.js、chrome://browser/content/brower.xul等文件(将FF安装目录下的jar文件解压,或者通过浏览器中view-source,或者在线的FF源码http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#1000来查看)。在这里,你可以找到gBrowser、gContextMenu等全局变量的定义,以及一些不为人知的隐藏API。

    3.尽量使用oo的思想来书写JS程序,这样可以增强程序的可读性和可复用性。

    4.借鉴FF Add-ons网站上,其它高手发布的一些扩展源码。

    (六)技术参考

    1.MDC在线文档

     https://developer.mozilla.org/en/DOM/window

     https://developer.mozilla.org/en/DOM/document

     https://developer.mozilla.org/en/Code_snippets/Tabbed_browser

     view-source:chrome://browser/content/browser.js
     view-source:chrome://browser/content/nsContextMenu.js

     ……

    2.技术论坛/聊天室

 

    3.Add-ons for Firefox

    https://addons.mozilla.org/en-US/firefox/

 

 

 

Eiffel 引介 Part V

Eiffel IntroductionEiffel 引介 Rensselaer, 2000James C. McKim, Jr, Rensselaer at Hartford K ][ N G of ...
  • kingofark
  • kingofark
  • 2003-03-04 08:56:00
  • 1053

firefox extension

http://developer.mozilla.org/en/docs/Extensions 这是mozilla的开发中心对于firefox extension的专题Building an Exte...
  • treewater
  • treewater
  • 2006-05-05 16:11:00
  • 1823

firefox extension与page交互

在firefox中进行扩展有两种方式,一种是extension,另外一种为plugin。 extension是firefox的附加组件,它可以改变firefox的现有功能和增加一些新功能,exten...
  • rxr1st
  • rxr1st
  • 2013-05-19 22:06:42
  • 1323

Firefox extension开发实战

    开始写文章之前,先自我检讨一下自己的无知。    Firefox是开源的,地球人都知道。在接触现在的项目中FF扩展的开发之前,我居然一直都认为FF是Java开发的(以前一直都把java和开源划...
  • wirror800
  • wirror800
  • 2010-06-06 17:47:00
  • 4796

说说我的Firefox Extensions

 Extensions让Firefox变得更强大而且灵活,利用Extensions,你可以按自己的愿望来定制Firefox的功能。比如用惯了Maxthon(MyIE2)的人,可能希望Firefox在使...
  • naive1010
  • naive1010
  • 2005-03-22 08:20:00
  • 1657

Firefox扩展开发之一

         最近主要做Firefox插件的开发,决定把每天的工作情况写下来,希望对其他有需要的同人有所帮助了。         要搞这个冬冬最起码要掌握以下几门技术,XUL用来开发界面的,Jav...
  • nickcen
  • nickcen
  • 2006-07-13 23:03:00
  • 2244

FireFox插件和扩展开发(四)——常见问题的解决

一、FireFox扩展中的插件注册问题使用扩展,如果扩展中带了XPCOM组件,放在扩展的components目录下,名别写错了,今天折腾半天就因为笔误,总是马虎。然后要删除profile中的两个xpt...
  • vinilarain
  • vinilarain
  • 2010-03-03 18:36:00
  • 1712

【转】 firefox插件开发和调试

原文:http://huandu.me/2010/02/11/595/ Firefox插件(plugins)开发实用指南 Firefox插件可实现强大功能,但其中麻烦事情不少。写这...
  • code09
  • code09
  • 2012-02-16 10:19:39
  • 6979

firefox下的插件

1、插件的安装 以下是一些特色插件,打开firefox后,从“工具“——>“附加组件“打开组件管理器,然后输入下面插件的关键词进行搜索安装即可,如下:打开插件管理工具,输入关键词“science...
  • Brightbro
  • Brightbro
  • 2014-12-29 17:14:31
  • 589

firefox插件(plugin)开发概述

firefox的插件分两种类型,一种extension,叫扩展,一种是plugin,我们叫插件.两种是完全不同的两个东西。extension相对来说简单很多,用的主要是XUL,只是xml的一个变相。而...
  • fancycow
  • fancycow
  • 2012-02-15 14:35:46
  • 22321
收藏助手
不良信息举报
您举报文章:Firefox extension开发实战
举报原因:
原因补充:

(最多只允许输入30个字)