XML 用户界面语言(XUL)开发简介(4)

来源:未知 浏览 529次 时间 2021-03-15 22:40

XML

下一个沉要的摆设文件是 chrome.manifest。这个文件必定放在 chrome目录中。常常须要在 chrome 目录中包括一身材目录,用户界面用于存放十脚的 XUL 文件。不妨依据本人的喜......

下一个沉要的摆设文件是 chrome.manifest。这个文件必定放在 chrome目录中。常常须要在 chrome 目录中包括一身材目录,语言用于存放十脚的 XUL 文件。不妨依据本人的爱好为其定名。它在清单 2 中叫干 “xulblogger”,(然而是许多运用步调将其定名为 “content”。chrome.manifest 用于奉告 XUL 运行时何如样找到您的文件。清单 2 表露了 chrome.manifest 的一个示例。

OS:安排体系

API:运用编程接口

XPCOM 开拓

假几何过脚够多的 XUL 开拓,XUL大概想创造本人的 XPCOM 组件。为此,)须要 Gecko SDK。不妨下载此文件并当作一个二进制文件,开发大概者从新建立。SDK 包括洪量 C++ 头文件和用于前提 Gecko XPCOM 组件的 IDL 文件,简介以及用于创造 XPCOM 组件的吩咐行东西。要开拓 XBL,(将 XUL 控件绑定到您开拓的 XPCOM 组件上,4Spket IDE 将会格外有用。

闭于称呼空间

您大概许注沉到,)证精确 2 个称呼空间。一个是 xul 称呼空间,XML在 XUL 文件中创造每个 UI 控件时运用。共时,用户界面还有一个指向 HTML 形式的默认称呼空间。这跟大普遍 XUL 文件的树立办法是差异的。常常,语言XUL 称呼空间是默认的,(而且所有 HTML 元素都须要增添前缀。然而是在这个例子中,XUL咱们想让用户将 HTML 输出到博客编写器中。也不妨领会预览窗格的实质,)而后增添适合的 html 前缀(大概者想要运用的其他前缀)。在这些实质被转储前,开发将此前缀动作标记的一局部。

JavaScript 和 CSS 的另一个一齐之处是,简介其举动城市依据欣赏器的不共而变革。欣赏器嗅探在 JavaScript 中非常常睹,(因此步调员不妨在基于用户运用的欣赏器典型和版本的多个实行中编写沟通的函数。在 CSS 中前提款式的运用也具备沟通的个性。假几何过许多 Web 开拓,4便大概蒙受过这些欣赏器古怪。假如属于这种情景,)您将会爱好上运用 XUL 编程。为什么呢?因为运用 XUL 时只要要计一致个欣赏器。便像在全世界都运用 Firefox 的情景下开拓 Web 运用步调。

清单 10. read() 函数

function read() {try {netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");} catch (e) {alert("Permission to read file was denied.");}var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);file.initWithPath( savefile );if ( file.exists() == false ) {alert("File does not exist");}var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );is.init( file,0x01, 00004, null);var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );sis.init( is );var output = sis.read( sis.available() );deserialize(output);}

图 2. XUL 运用步调的目录构造

Firefox 扩充的闭头在于,XML创造具有富饶功效的扩充格外大概。这很大概:不妨用 XUL 编写 Firefox 扩充,用户界面便像 Firefox UI 普遍。它们不妨运用 XUL 富饶的弥漫个性。有了弥漫,语言便不妨定位一局部现有的 UI 组件,(并插入本人创造的新的 UI 组件。图 1 表露安置了一些扩充的 Firefox。

您大概闭于 Netscape 公司的展开过程比较熟悉。该公司在 1995 年的 IPO 标记取 dot-com 灿烂的发端。直到 1998 年,XUL公司虽然在财政上不太成功,)然而是博得了一些沉要的本领功效。这些功效的核心即是 Mozilla 名目。这是从 Netscape Communicator 4.0 的代码在赢得开源答应之成果然发行发端的。究竟证明这个代码库难于开拓和保护,开发然而是倒霉的是,简介在他们的筹备中也有好的方面。Netscape 不不过让现有的 Communicator 盛开源代码,(他们的下一代安置引擎代码也是开源的。这个安置引擎将会成为 Gecko。它的一个沉邀功效是救济证明性的、基于 XML 的 UI 谈话,4也即是 XUL。

常用的缩写词汇

Ajax:异步 JavaScript + XML

不管采用什么样的编写器,)您最后都须要运行代码。再证明一下,XML您有许多采用,用户界面个中一些还运用 Firefox。

这闭于于干过许多 HTML/JavaScript 处置的人来说,语言该当很熟悉,(更加是干过 Ajax 开拓的人。这正是咱们风俗编写的 JavaScript 典型:运用元素的 ID 来赢得元素,XUL而后运用 HTML 元素的 innerHTML 属性将其转储到 HTML 中。您还须要注沉何如样从用户的签名中获得数据,)而后将其变换成一个数据 URL。这使您不妨将签名表露为图像。该数据 URL 是一弛采用 64 位编码的 PNG 方法的图像。以至不妨将这些数据保持到本地文件中。画布元素还有许多其他功效,开发而且不妨在 XUL 运用步调中大肆运用。

展示了 3 个沉要文件。开始是 application.ini。这个文件必定放在运用步调的根目录下。它最沉要的用途是奉告 XUL 运行时它须要什么版本的运行时,简介如清单 1 所示。

XUL:XML、JavaScript 和 CSS

XUL 是为 Gecko 引擎建立的独占 UI 谈话。它受到基于 Gecko 的 Web 欣赏器开拓人员的喜爱。这是因为它是建立在尺度本领(比方 XML、JavaScript 和 CSS)之上的。

大概最沉要的一点是 XUL 运用步调的目录构造。在本教程中将会创造一个称为 xulblogger 的运用步调。图 2表露了该步调的目录构造。

Firefox 3.0

建立运行在 XULRunner 上的运用步调时,(一个不及之处是须要在运用步调中包括 XULRunner。这引导运用步调大概减少了 12MB。这闭于于像 Songbird 如许的媒介播放器来说不算什么。毕竟姑且大普遍媒介播放器都比较大。闭于于像 Joost 如许的流视频运用步调来说也不算什么。毕竟,4流视频须要赶快对接,)因此闭于大普遍 Joost 用户来说,XML特殊的 12MB 大概很快便能下载下来。然而是闭于于许多运用步调来说,用户界面XULRunner 运行时跟运用步调自己普遍大,语言大概者更大。这使得 XULRunner 不再那么有吸引力。

下载

刻画名字大小

胜过 Firefox:XULRunner

Firefox 将 XUL 奉献给了数百万用户。然而 XUL 并不只仅是一个创造 Firefox 及其扩充的本领。Firefox 的用于电子邮件的姊妹运用步调是 Mozilla Thunderbird。这个步调也是用 XUL 编写的,(而且具有一个绚烂的扩充库,XUL经过 XUL 弥漫实行。纵然它不 Firefox 那么流利,)然而是它具有 5 百万疏通用户。机会在于您的 ISP 供给了一些指令,开发假如他们为您供给了电子邮件帐户,简介那么这些指令可用来将 Thunderbird 树立为该帐户的一个 IMAP 大概者 POP 客户机。XUL 并不限制于 Mozilla 名目。它也被安排为一个框架,(用于跨平台桌面运用步调的开拓。然而,4像 Firefox 和 Thunderbird 如许的运用步调是环绕 Gecko 引擎建立的。它们须要 Gecko 引擎来出现 HTML 页面和 HTML 电子邮件,)然而是 Gecko 引擎也出现了它们的 UI。普遍而言,XML大普遍桌面运用步调不须要出现 HTML,用户界面因此它们也不须要 Gecko 引擎。然而是不 Gecko,语言它们何如样运用 XUL 呢?答案便在于 XULRunner。XULRunner 在 Gecko 引擎之外供给纯 XUL 运行时情况,(从而持续了 Gecko 的模块化个性。这答应您建立运用步调代码中直接包括 XULRunner 的运用步调。

中的代码创造了一个 Scribbler 闭于象。这个闭于象监听画布控件内的 3 个事变:mousedown、mousemove 和 mouseup。这些事变在用户按下鼠标、挪动鼠标而后放松鼠标时触发。这个代码仅在这些事变功夫捕获鼠目标地位并决定相闭于的地位,XUL而后在这些点之间画制线条。领会签名控件的处事本理之后,)便不妨尝试这个运用步调了。

天然,开发证明性编程存留固有的限制性。它不可制止地须要一些抑制性编程。XUL 直接救济 JavaScript,简介而不是创造一种新谈话大概者创造一些基于 XML 的语法。姑且 JavaScript 动作一种编程谈话常常受到背后的评介。JavaScript 被认为是一种符合于非编程人员的谈话,(而且布满了特定于欣赏器的扩充和个性。然而,4JavaScript 是一种富饶的谈话,)它是 Web 运用步调开拓的中坚力量。毕竟,XMLJavaScript 是 Ajax 中的 “J”。它是一种函数性编程谈话,用户界面然而很容易以过程大概面向闭于象的办法运用它。XUL 把 JavaScript 当作一种桌面编程谈话,语言并将其放在最前方的地位。XUL 也格外依附 JavaScript 中的 DOM 实行 — 毕竟,(XUL 是基于 XML 的。

CSS:层叠款式表

清单 6. preview() 函数

function preview(){var preview = document.getElementById("preview");preview.innerHTML = document.getElementById("entry").value;var sigImg = document.createElement("img");sigImg.src = document.getElementById("canvas").toDataURL();preview.appendChild(sigImg);}

基础本理

开始,XULXUL 是一种基于 XML 的 UI 谈话。要创造 XUL 文件,)只要要不妨创造 XML 文件。您大概许想编写一些脚本,开发以使运用步调具备接互性,简介因此须要编写一些 JavaScript。要创造 XML 和 JavaScript 文件,(不须要特定的编译器。XUL 运行时将会解释这些文件。然而是,4您还须要干一些工作。

XULBlogger 的代码xulblogger-code.zip8KB

清单 4. XUL(/chrome/xulblogger/home.xul)中定义的 UI

<?xml version="1.0"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?><xul:window title="Create Blog Entry" orient="horizontal" xmlns="http://www.w3.org/1999/xhtml"xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"><xul:script src="blog.js"/><xul:script src="json.js"/><xul:vbox><xul:hbox><xul:label value="Name of entry"/><xul:textbox multiline="false" cols="70"/><xul:label value="Signature"/><canvas></canvas></xul:hbox><xul:textbox multiline="true" rows="10" cols="80"/><xul:hbox><xul:label value="Tags"/><xul:textbox cols="80" multiline="false"/><xul:button label="Save" /><xul:button label="Preview"/></xul:hbox><xul:hbox><xul:label value="Publish Date"/><xul:datepicker type="grid" value="{new Date()}"/></xul:hbox><div></div></xul:vbox><xul:script src="canvas.js"/><xul:script>read();</xul:script></xul:window>

XUL 开拓

咱们已经领会了 XUL 的发源和展开情景。更沉要的是,)已经精确了不妨用 XUL 和它供给给开拓人员的有利机会来干什么。尔憧憬您姑且已经迫不迭待想要进行 XUL 开拓了。开始,XML您将树立一个 XUL 开拓情况。

不妨瞅到,用户界面这个文件只包括一行大概的摆设。结果一个沉要的文件是 prefs.js。此文件必定放在 /defaults/preferences 目录下。它奉告运行时开始须要载入什么样的 XUL 文件,语言如清单 3 所示。

这是一个很大概的 UI。XUL vbox 和 hbox 组件使安置变得很大概。按从左到右的程序,(vbox 在笔直目标上顺序陈设各个闭于象,XUL而 hbox 在程度目标陈设各个闭于象。UI 有 2 个标签、3 个文本框(包括一个多行文本框)和 2 个按钮。这些都是格外直瞅的代码;纵然您往日不睹过 XUL,)也能领会这些代码的用途。该 UI 还运用了几个更高档的控件。它运用了一个 datepicker 控件。这是在 Firefox 3 中引入的新控件。注沉运用 JavaScript 表白式初始化 datepicker 的发端日期(值属性)的办法。其他,开发还须要注沉运用户不妨在 XUL 控件里面画制的画布控件,简介该控件使他们不妨闭于博客发布进行电子签名。留神探究这个控件的处事本理。

5 个血色的矩形展现来自扩充的 UI 元素。导航东西栏内包括一个大东西栏和 3 个按钮。其他,(状况栏上还有几个图标。单打这些图标将挨开大的闭于话框,4每个闭于话框都将用户界面和菜单、选项卡等通联起来。这表明 Firefox 扩充自己即是富饶的运用步调,)因为它们运用 Firefox,XML所以便运用了 XUL 动作开拓平台。

深刻领会 XUL 并编写一个大概的运用步调来创造、保持和发布博客条目。这个基于 XUL 的博客编写器供给了洪量前提的文本编写功效,用户界面并答应您在本地保持草稿以便登时沉新加载并进行编写。这个编写器还介入了 XUL 的画制功效,语言它答运用户运用博客电子签名。

创造 Firefox 的效果是建立运用 Gecko 引擎救济的精简欣赏器。这惟有运用 Gecko 的模块化构造才大概实行。截止被证明是成功的。至 2008 年 9 月,(Firefox 已占到了 19% 的寰球商场份额,XUL具有 1.4 亿用户。它还赢得了合流媒介(比方,)Forbes 和 PC World)的好评。

图 1. 戴有扩充的 FirefoxEclipse 和 XUL

动作一个有体味的开拓人员,开发您大概已经领会 Integrated Development Environment (IDE) 的价格。您大概计划 IDE 是否可用于 XUL。这有洪量的采用,简介有几个可用的 XUL IDE 建立在格外通用的 Eclipse 平台之上。闭于于 XML、JavaScript 和 CSS 编写,(XULBooster(参睹 )运用流利的 Eclipse Web Tools Platform。它还运用 XULRunner 来实走运用步调,4而且对接到 XULRunner 进行调试。图 3 表露了 XULBooster 的屏幕截图。

创造 Firefox 3.0 向 XUL 开拓人员出现的机会。

清单 2. chrome.manifest 文件

content xulblogger file:xulblogger/

更多的 XUL 开拓

您只是运用 XUL 创造了一个大概的桌面运用步调。假如您是一个 Web 运用步调开拓人员,)那么 XUL 可认为您开开一个崭新的世界。您还该当领会 XUL 开拓的更多简直典型。开始是为 Firefox 和其他基于 Mozilla 的欣赏器编写扩充。

清单 9. 决定保持文件的代码

var savefile = "blogentry.txt";try {netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");} catch (e) {alert("Permission to save file was denied.");}// get the path to the user's home (profile) directoryconst DIR_SERVICE = new Components.Constructor("@mozilla.org/file/directory_service;1","nsIProperties");try {path=(new DIR_SERVICE()).get("ProfD", Components.interfaces.nsIFile).path;} catch (e) {alert("error");}// determine the file-separatorif (path.search(/\\/) != -1) {path = path + "\";} else {path = path + "http://www.ibm.com/";}savefile = path+savefile;

须要干的第一件事是开用 XPConnect。这答应运用 XPConnect 来处置 XPCOM 组件。在这个示例中,XML运用的是 Mozilla 的 org.file.local 类。而后不妨调用这个闭于象上的办法,用户界面便像闭于象是在本地运行普遍。您大概许还注沉到此地调用的 serialize() 办法,语言它将输出的数据序列化成一个 JSON 串,(如清单 8 所示。

因此不妨将数据写入磁盘,XUL然而是何如样从磁盘读取数据呢?您大概许在 注沉到,)在开用时调用了一个 JavaScript 函数 read()。清单 10 表露了此函数的代码。

然而,开发您不再须要将 XUL 运用步调和 XULRunner 绑缚在所有。因为 Firefox 3.0 已经建立在 XULRunner 之上。Firefox 和 XULRunner 运用沟通的核心库和 libxul,简介这答应所有 XUL 运用步调运用 Firefox 动作 XUL 运行时,(而不是 XULRunner。到 2008 年 9 月份为止,4全世界一公有 1.4 亿 Firefox 用户。在这些用户核心,)有 68% 已经革新到 Firefox 3.0。这相当于胜过 9500 万用户已经安置了 XUL 运行时。即您的 XUL 的潜伏运用者多达 9500 万。这个究竟也实用于 Firefox 开拓人员。在本教程反面的留神报告中,XML您将瞅到,用户界面只需增添 -app 吩咐行参数,语言便不妨将 Firefox 3 动作所有 XUL 运用步调的 XUL 运行时。

十脚这些代码所干的即是决定用户的主目录。因此运用步调保持的所罕见据都将保存在 ~/blogentry.txt 中。其他,(不妨运用 XPCOM 考察一些丰厚的功效,XUL这些功效是 XUL 框架的一局部。这些代码也会干一些 OS 嗅探,XML 用户界面语言(XUL)开发简介(4)以制止运用缺点路途保持数据而引导的问题。

共6页:

上一页

1

2

标签: XUL步调运用lt