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

翻译 2012年03月04日 14:40:14
在深入阐述之前,我们快速的介绍一下用来开发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版下载

Firefox附加组件开发者指南(一)——扩展简介

https://developer.mozilla.org/En/Firefox_addons_developer_guide Chapter1: Introduction to extension...
  • z6482
  • z6482
  • 2012年03月04日 14:13
  • 2434

学linux内核的一些感想

关于计算机科学与技术专业的感想两个月前,我突然决定看一下linux内核。作为一个计算机专业出生的学生,我想透彻地了解整个计算机系统。虽然学过计算机组成原理、操作系统、编译原理等课程,但是总感觉比较偏向...

firefox附加组件开发者指南(四)——使用XPCOM:实现高级处理

本章描述如何利用javascript脚本语言使用XPCOM来实现高级的处理。 概述 Javascript没有类似于用来打开文件以及进行字符编码转换的函数。要实现这些功能需要采用其他机制。IE使...
  • z6482
  • z6482
  • 2012年03月05日 19:21
  • 4097

firefox附加组件开发者指南(五)——创建一个firefox扩展(下)

开发实用的扩展:一个会话管理扩展 这一节,我们将会创建一个实用新特性的扩展:会话存储API。这可以让用户在任何时刻保存和恢复会话快照(浏览器窗口状态)。 第一阶段:测试安装 图12展示了会话...
  • z6482
  • z6482
  • 2012年03月12日 22:14
  • 5421

firefox附加组件开发者指南(五)——创建一个firefox扩展(上)

本章篇幅较长,分上下两部分发布,本章中的图和清单4在原网站中没有,因此这里也没有,感兴趣的可以去原文补充。下面是译文。 至今为止,各个章节中独立的介绍了相关的技术——XUL、javascript...
  • z6482
  • z6482
  • 2012年03月12日 21:49
  • 3334

firefox附加组件开发者指南(三)——XUL简介(下)

其他XUL功能 Overlay XUL的一个与众不同的特性就是overlay。可以将多个XUL文档联合起来,并当做一个单独的XUL文档来处理。在Firefox中,这用来对各种功能进行模块化并实现了...
  • z6482
  • z6482
  • 2012年03月04日 16:33
  • 2311

firefox附加组件开发者指南——译序

本系列文章很适合作为学习Firefox附加组件开发的参考。其中说明了Firefox扩展开发所需要使用到的技术,并对这些技术进行了简明的介绍。翻译完本系列文章,特别是第五章之后,我对Firefox附加组...
  • z6482
  • z6482
  • 2012年03月04日 13:42
  • 1376

firefox附加组件开发者指南(三)——XUL简介(中)

XUL中可用的窗体部件 根元素 XUL文档使用不同的根元素来实现不同的目的。本节我们将会看到三种典型的根元素:window、page和dialog。 根元素使用windowtype属性作为这种类...
  • z6482
  • z6482
  • 2012年03月04日 16:21
  • 2915

firefox附加组件开发者指南(三)——XUL简介(上)

这一章内容较多,故分三篇:XUL简介、XUL中可用的窗体部件、其他XUL功能。 在学习如何开发扩展之前,我们来了解XUL,基于XML的用户接口语言,XUL是扩展的基本组成之一。 概述 XUL...
  • z6482
  • z6482
  • 2012年03月04日 15:07
  • 2329

firefox附加组件开发者指南

  • 2012年03月04日 14:25
  • 1MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:firefox附加组件开发者指南(二)——开发扩展过程中使用的技术
举报原因:
原因补充:

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