firefox附加组件开发者指南(二)——开发扩展过程中使用的技术

在深入阐述之前,我们快速的介绍一下用来开发firefox扩展的技术。还有为开发firefox必须了解的一些知识。

开发firefox扩展用到的技术

Firefox及其扩展都是基于当前网络开发广泛使用的技术。其结构与使用在网页中的动态HTML和windows中使用的HTML应用程序是相似的。如果你有开发动态HTML的经验,你就会发现学习开发firefox扩展的技术会相对的轻松。

各种技术所扮演的角色

Firefox总体上使用了四种技术:XUL、CSS、javascript、以及XPCOM。扩展也是由这四种技术构成的。
图1:firefox中各种技术的角色

除了这些技术,扩展开发还需要你学习如何为你所写的代码授予权限以克服安全机制的限制,以及如何将你的代码嵌入到firefox的UI中。这些问题在第五章讨论。

必备知识The minimum knowledge required

简洁起见,省略对那些广为人知的技术的解释,将重点集中在介绍开发firefox所需要的新的技术上。假设你已经有了开发动态HTML的经验。以及下面这些技术。要获取关于这些技术的更多信息请参考其他资源:
• XML coding
• CSS coding
• Basic JavaScript syntax

XML:基于文本的结构化语言

可扩展标记语言(XML)是一种用于表达各种数据的元语言。W3C在1998年提出,该组织为网络相关技术设置标准。XML有很多有用的特性:通用,可扩展、便捷有效。
基于XML的标记语言例如XHTML是HTML基于XML从定义的;SVG用于表示矢量图;MathML用于表示数学公式。用于firefox的XUL也是基于XML的。
清单1:XML语法

<elementname someattribute="somevalue">
content
</elementname>

如清单1所示,XML使用元素,元素由开始标签和结束标签以及内容组成。
注:没有内容的元素可以用简单的形式表示为:<elementname/>
一个元素可以在其内容中包含其他元素和文本,所有信息构成一个树结构。在所有的树中,元素都可以有子元素(元素所包含的元素)及父元素(包含该元素的元素)。属性也可以添加到开始标签中,每个属性对应一个值。
正如XML的可扩展说描述,各种基于XML的语言(如XHTML和SVG)中的元素都可以嵌入到另外的元素中作为一种扩展语言的方法。所有的元素都可以带有一个“namespace URI”标识符,每种语言的标识符都是唯一的。例如,即使XHTML和SVG有想同名称的元素,也可以进行区分。XHTML的名字空间URI是"http://www.w3.org/1999/xhtml",SVG的是:"http://www.w3.org/1999/xhtml"

CSS:一种改变XML文档显示的样式语言

与XML相似,层叠样式表(CSS)是一种由W3C制定的技术规范。它是一种样式描述语言,定义了在XML和HTML中标记的数据的显示。如清单1所示,它有一个极为简单的语法。通过分离HTML和XML所表示的数据的结构,和由CSS说明的显示样式,与将结构和样式标记都嵌入在HTML中相比,数据可以进行更好的重用。
有三种CSS规范(一级到三级),其功能特性逐渐强大。Gecko渲染引擎处理的基本上都是二级CSS和一些三级CSS。
清单2:CSS代码示例

body {
color: black;
background-color: white;
}
p {
margin-bottom: 1em;
text-indent: 1em;
}

JavaScript: 世界上最容易误解的语言

Javascript是一个脚本语言,最早于二十世纪九十年代开发,那时候是为网页添加动态特性的一种方式。由于经常用来显示弹出窗口,显示状态栏文字,或用其他方式会使得网页对用户来说很不方便,这种语言变得不实用且功能缺乏。
又因为在javascript中发现了一系列的安全漏洞以及与Jscript的兼容性,有一种完全放弃javascript的趋势。
然而,网络服务如google maps(使用javascript以及异步通信)的增长,创造了一系列昵称为AJAX(Asynchronous JavaScript and XML)的技术。加上很多库的到来,这些库在不同的网页浏览器中都实现了,这导致了对javascript作为一种编程语言的重新评价。
Javascript是一种面向对象的源语言,如清单3所示,也允许独立的类定义。没有像java一样的复杂类型,使得javascript相当的方便并带来了….
(注:与javascript技术无关,需要看的请参考原文)
Firefox3.5包含了很多ECMAScript第三版标准规范的扩展,可以使用javascript1.7和javascript1.8
清单3:javascript中定义类的一个例子

function MyClass() {
}
MyClass.prototype = {
property1 : true,
property2 : 'string',
method : function() {
alert('Hello, world!');
}
};
var obj = new MyClass();
obj.method();

DOM: 处理XML文档的API

文档对象模型(DOM)是一个由W3C发布的技术标准,是一个以对象的方式处理XML文档内容的API。在早期的动态HTML分支中,典型的方法是使用HTML元素节点的innerHTML属性通过处理字符串来动态的改变HTML文档内容。但是使用DOM处理XML文档与javascript面向对象的自然特性相结合,为处理XML文档提供了一种更好的方式。
另外,XUL没有任何与innerHTML属性等效的属性,因此如果没有DOM,动态处理将无法实现。
有很多级别的DOM,各种级别的DOM都有不同级别的功能。Gecko支持几乎所有的2级DOM以及一些3级DOM。
我们不对DOM中不同API的细节进行讨论。要学习更多关于DOM的东西,请看看MDC中的文档
清单4:使用DOM进行处理的一个例子

var bar = document.getElementById('toolbar');
bar.removeChild(bar.childNodes[1]);
bar.appendChild(document.createElement('button'));
bar.lastChild.setAttribute('label', 'Hello!');

译文pdf版下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值