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附加组件扩展插件开发综述

有一些东西想通过火狐扩展来实现;因为觉得可以省一些事。于是借此机会了解了firefox开发的整个体系。正如所想的,不仅可以开发开发基于火狐的扩展,同时也可以开发一个类似火狐的独立应用程序。 了解火狐...
  • xiaoyun_ny
  • xiaoyun_ny
  • 2015年01月19日 13:46
  • 4221

手动导出firefox配置文件,附加组件

重装完系统,发现我的firefox没备份。 百度了一下,看来要保留常用的firefox附加组件也不是太麻烦,复制粘贴一下firefox系统文件夹就行了。 我的老系统是XP,装了个win7,用的都是...
  • colordrv
  • colordrv
  • 2012年01月08日 15:28
  • 4048

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

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

【浏览器】Firefox那些事——扩展、插件、脚本、附加组件

背景: 折腾: 浏览器,先是国产的QQ浏览器、后是Chrome、然后是Firefox(其他的IE、Edge、Opera、Safari没有折腾,毕竟玩就玩大的——数据来源)。 原因: 为啥先折腾QQ浏览...
  • MrBaymax
  • MrBaymax
  • 2017年09月30日 19:31
  • 655

firefox解除禁止未验证附加组件的办法

firefox 43及以上版本解除禁止未验证附加组件的办法 https://support.mozilla.org/zh-CN/army-of-awesome @Shuihuise 升级了新版Fi...
  • yu8196378
  • yu8196378
  • 2016年09月02日 11:15
  • 2706

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

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

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

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

解决在firefox上安装附加组件无法使用的问题

在firefox上安装附加组件无法使用有可能的原因 1.版本不兼容 2.Firefox上默认禁止安装或使用未通过验证的扩展 (Firefox里对于没通过验证的扩展会弹出类似“此附加组件无法安装,...
  • jaivy
  • jaivy
  • 2017年10月04日 14:24
  • 1133

每次打开火狐都要检查附加组件与浏览器的兼容性,如何取消这个页面

这是博主自己遇到的一个问题,网上说的各种改配置啊添加插件都没有用。博主自己解决这个问题是重置firefox,步骤为下: 1.浏览器地址输入about:support,页面如下: 2.点击右边的...
  • twinkle2star
  • twinkle2star
  • 2017年06月26日 09:27
  • 1906

最新完整的比特币开发者指南中文翻译

Bitcoin开发者指南完整中文翻译中文版: 完整的中文翻译官方英文版: 英文版
  • nuptuser
  • nuptuser
  • 2017年06月26日 18:06
  • 1683
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:firefox附加组件开发者指南(二)——开发扩展过程中使用的技术
举报原因:
原因补充:

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