Add-on
要了解Firefox的插件开发,不可避免的要了解XUL,这是一个必然的过程,否则连基本的UI都无法制作了。看看我现在加强了UI后的现成品,是不是看上去非常的不错。当然,在开发Firefox插件的时候,有很多的细节需要去了解。虽然Firefox的插件基于HTML,CSS和Javascript,但是Firefox本身提供的引擎和标准的并不相同,而且在开发过程中,测试,调试都是很有难度的。例如DTD文档等等,都不是我们在标准中所看到的文档形式。当然,Firefox插件为开发人员提供了基本的(也是标准的)引擎,例如CSS可以写color:red,而javascript可以写window.open,但是在解释上面,Firefox的引擎有自己的一套理解方式,例如在安装的js文件中,写window.open就没有任何作用。
OK,多的不说了,先说简单一点的,要了解Firefox插件的机制,首先就需要了解XUL的开发方法,编写方法和流程。XUL并不难,其编写方法和阅读方法和XML基本相同(同样也做了扩展),Firefox能够很好的将这些XML标签解释并以控件的形式呈现在Firefox中。XUL的语法很简单,例如。
<menupopup>
<menuitem label=”List”/>
<menuitem label=”Details”/>
</menupopup>
</button>
上面这段类似XML的代码,就为我们创建了一个列表按钮。

这样在浏览器中我们就可以在工具栏中看到相应的控件了(你说你写了看不到?我们下面来说)。当然Firefox还为我们提供了很多的控件,并且在Firefox3以上版本中,又增加了很多有用的控件,例如日历控件,scale控件等等。只有熟练的掌握了这些控件的编写方式,我们才能够游刃有余的编写一个自己想要的插件。在官方的教程中,已经讲解了很多XUL控件的使用方法,具体可以去看这个链接,在这个链接里,官方展示了很多的Firefox的控件的编写方法。
好,我们这些控件编写在哪个文件里呢,在上一节中我们创建了一个Firefox项目,但是Firefox项目会自动生成很多文件,现在我们就简单的看看我们生成的文件。

上图我在图中勾勒了一个重点,就是overlay.xul,我们打开这个文件,能够看到里面的代码,在默认情况下(就是创建了之后马上运行),我们会在工具栏中看到一个加红的菜单,当我们点击了菜单,会执行相应的操作。现在我们看看overlay.xul这个文件,其中创建了menuitem以及menupop等控件,在XUL中,可以使用XML语法进行编写。
<menupopup>
<menuitem label=”Lions” value=”l”/>
<menuitem label=”Tigers” value=”t”/>
<menuitem label=”Bears” value=”b”/>
</menupopup>
</menulist>
当然,这个并不是overlay.xul中的源代码,只是这样我们更好理解控件编写的位置,例如我们将上面的代码粘贴到overlay.xul文件中,也会产生不同的效果。每一个XUL文件都可以看成是一个窗口(window),而overlay.xul可以看作是一个特殊的窗口,这个窗口不会产生任何的window,而是嵌入到浏览器中(作为按钮或菜单),而其他的XUL文件都可以以window的形式打开。值得注意的是,实际上,overlay.xul并不是特殊的窗口,虽然这看上去和我前面说的有差别,但是作为初学者而言,这样理解也不是不可以,在以后深入了插件的开发,就能够理解我为什么这么说了。
OK,我不喜欢写长篇大论,所以就暂时讲到这里吧,这里我们首先需要详细和熟练的了解https://developer.mozilla.org/en/XUL_controls这个网页中的所有的关于控件的讲解,如果你熟练了(或自认为熟练了),可以看看如何制作一个我们一开始展现的控件的UI,如果你能做出来,说明你太牛了,不用看我写的东西,如果不行,理所当然,当然也不是完全不能做,至少能模拟个80-90%,以后我们会一起探讨一下Firefox插件项目中这些文件是如何协调的,并且我会用实例(就是我们一开始看到的插件和UI)来讲解一些细节的我花了很长时间才找到和理解的Firefox UI开发。
看了你写的东西,觉得不错,不过怎么在下拉菜单前面加小图片呢?
好,谢谢
http://www.shangducms.com/blog/wp-content/uploads/2009/3/overlay.png 这个是在什么环境下开发的呢,是什么IDE工具呢,能介绍一下吗
[...] Firefox Add-on – XUL [...]