XUL教程:为XBL元素定义方法

原文标题:XUL Tutorial - Bindings - Adding Methods

原文作者:Neil Deakin

原文地址:http://www.xulplanet.com/tutorials/xultu/xblmethods.html

以下是对原文的翻译:

接下来我们学习如何向XBL中定义的元素添加方法。

方法(Methods)

既然可以向XBL定义的元素添加属性,自然就可以添加方法,这些方法可以在脚本中调用。方法表现为对象的函数,比如“window.open()”。你可以通过method元素为你自己的元素添加自定义方法。下面介绍添加方法的语法:

<implementation>
<method name="method-name">
<parameter name="parameter-name1"/>
<parameter name="parameter-name2"/>
.
.
.
<body>
-- 在这里编写方法的脚本代码 --
</body>
</method>
</implementation>

方法也是在implementation元素内部定义的,就像字段和属性的定义方式一样。method元素包含两种类型的子元素:parameter元素用来描述方法的参数,body元素用来包含脚本的代码。

name特性的值对应于方法的名称。同样的,parameter元素上的name特性对应于每个参数的名称。每个parameter元素对应于一个方法的参数。具体来说,如果方法有3个参数,那么就会有3个parameter元素相对应。如果方法本身没有参数,那就不用定义任何parameter元素。

body元素包含方法调用时要执行的脚本。参数的名称对应于脚本中的变量,就像真的是从参数传递过来一样。比如把下面这个JavaScript函数放在XBL中可能就是接下来的样子:

function getMaximum(num1,num2)
{
if (num1<=num2) return num2;
else return num1;
}
XBL:
<method name="getMaximum">
<parameter name="num1"/>
<parameter name="num2"/>
<body>
if (num1<=num2) return num2;
else return num1;
</body>
<method>

这个叫做getMaximum的函数,可以用来比较两个数的大小,要比较的数会通过参数传递给方法。注意那个小于符号被替换成,要不然会和标签的起 始符号发生混淆。同样可以把整段代码包含在CDATA块中。你可以通过使用类似“element.getMaximum(5,10)”这样的的代码来调用 这个方法,element就是包含getMaximum方法的XBL元素的一个引用。

可以使用parameter标签为方法定义参数。因为Mozilla使用JavaScript作为自己的脚本语言,而且JavaScript是一种弱类型语言,所以不用为参数定义类型。当然在以后,其他语言可能也会和XBL联合使用。

访问匿名内容(Accessing the Anonymous Content)

你一定遇到过要修改匿名内容里某些元素的情况,可是这些元素既然是匿名建立的,用常规访问DOM的方法是不可以的。因为开发者不需要知道他们是怎么 实现的,只要知道他们是做什么的就可以,所以他们对于开发者来说是隐藏的。但实际上确实有特殊俄方法可以操作匿名内容里的元素。

使用XBL描述行为的元素有一个特别的数组属性,保存了所有的匿名子元素。数组中的每一项对应于XBL元素下的一个子元素。这个属性不可以直接访问,必须使用document的getAnonymousNodes方法来间接访问:

var value=document.getAnonymousNodes(element);

在这里,element;必须设置为包含你要访问的匿名内容的元素的引用,这个函数返回一个元素数组,对应的就是匿名内容里的yu俺素。这时如果 要使用哪个元素,直接使用DOM的方法就可以啦,因为对于开发者这些元素现在已经是可见的了。需要注意的是,存在XBL元素嵌套的情况,这时候你可能需要 使用两次getAnonymousNodes函数。

下面的例子建立一行的按钮:

<binding id="buttonrow">
<content>
<button label="Yes"/>
<button label="No"/>
<button label="Sort Of"/>
</content>
</binding>

时间: 2024-08-02 03:16:58

XUL教程:为XBL元素定义方法的相关文章

XUL教程:为XBL元素定义属性

原文标题:XUL Tutorial - Bindings - Adding Properties 原文作者:Neil Deakin 原文地址:http://www.xulplanet.com/tutorials/xultu/xblprops.html 下面是对原文的翻译: 添加属性(Adding Properties) 在这一节,我们将学习怎样为XBL元素增加自定义属性. XBL接口 通过JavaScript和DOM,可以对元素的属性进行访问.在XBL中,你可以为元素自定义属性,当然也可以为元素

XUL教程:为XBL元素定义特性

原文地址:http://www.xulplanet.com/tutorials/xultu/xblatin.html 原文作者:Neil Deakin 以下是对原文的翻译: XBL特性继承(XBL Attribute Inheritance) 在这个小节我们将学习特性的继承方式. 继承的特性(Inherited Attributes) XBL可以让我们把复杂组件的实际实现方法隐藏起来.但是用目前为止介绍的功能,我们只能使用同样的方法建立匿名内容.如果我们可以通过为绑定元素增加特性,来修改内部的元

XUL教程:为XBL元素定义内容

本文配套源码 原文:http://www.xulplanet.com/tutorials/xultu/xblcontent.html 原文作者:Neil Deakin 下面是对原文的翻译: 匿名内容(Anonymous Content) 在这一小节,我们将探讨如何使用XBL建立内容. XBL Content XBL可以被用来向一个元素中添加一组元素.在XUL中只需要定义最外层的元素,而里面的元素都可以在XBL中定义.对于开发那些由一系列元素组成 的组件(widget)来说,这是再好不过的功能,只

XUL教程:为XBL元素定义事件

原文标题:XUL Tutorial - Bindings - Adding Events 原文作者:Neil Deakin 原文地址:http://www.xulplanet.com/tutorials/xultu/xblevents.html 下面是对原文的翻译: 这一节,我们来学习如何向XBL元素中添加事件处理程序. 事件处理程序(Event Handlers) 正如你所期望的,匿名内容里的元素支持鼠标点击.键盘按下等事件.但你可能会想采用一种特别方式触发事件和处理程序.如果需要,你可以向匿

XUL教程:对XBL元素进行扩展

本文配套源码 原文标题:XUL Tutorial - Bindings - XBL Inheritance 原文作者:Neil Deakin 原文地址:http://www.xulplanet.com/tutorials/xultu/xblinherit.html 下面是对原文的翻译: 在这一小节,我们将学习如果对已有的XBL定义进行扩展. 继承(Inheritance) 有时你要建立的组件可能和现有的某个组件很相似,比如你想建立一个可以弹出菜单的按钮,一种方法是重复造车轮,复制现有的butto

XUL教程:实例构建XBL组件

本文配套源码 原文标题:XUL Tutorial - Bindings - XBL Example 原文作者:Neil Deakin 原文地址:http://www.xulplanet.com/tutorials/xultu/xblex.html 下面是对原文的翻译: 这节将介绍一个XBL的完整例子. 幻灯片元素(A Slideshow Element) 让我们构建一个完整的使用XBL元素的例子,这是一个保存了一组对象的组件,而每页只会显示其中一个.置于下方的导航按钮用于循环显示这些对象,而在一

XUL教程:什么是XBL?

原文:http://www.xulplanet.com/tutorials/xultu/introxbl.html 原文作者:Neil Deakin 以下为对原文的翻译: 什么是XBL? XUL有一个姐妹语言,叫做XBL,全称是可扩展绑定语言(eXtensible Bindings Language),这门语言的主要作用就是用来定义XUL组件的行为模式. 绑定 你可以使用XUL定义一个应用程序界面的布局.你也可以通过设置样式来定制这些元素的外观.你还可以通过修改样式来建立新的皮肤.类似滚动条或者

C#集合遍历时删除和增加元素的方法_C#教程

本文实例讲述了C#集合遍历时删除和增加元素的方法.分享给大家供大家参考,具体如下: 大多数时候,遍历集合元素的时候并不需要对元素进行增加或者删除操作,但有些时候则需要,比如,如果集合中盛放的元素是社会上所有的人,那么有人死亡则元素删除,有人出生则是集合元素的增加.对于这种情况,遍历不能按照原来那种方式去做了,而且C#中的集合对于这类有增删动作的遍历,也不支持foreach循环. 有三种办法可以解决这一问题. 第一种方法:使用C#的LinkedList<>双链表.我原来设想,把原来链表需要删除的

WPF中的ListBox实现按块显示元素的方法_C#教程

本文实例讲述了WPF中的ListBox实现按块显示元素的方法.分享给大家供大家参考,具体如下: 注意:需要设置ListBox的属性 ScrollViewer.HorizontalScrollBarVisibility="Disabled" 关键代码,WPF中有内置的WrapPanel控件,在ListBox.ItemsPanel中使用可以让元素按块显示 <ListBox.ItemsPanel> <ItemsPanelTemplate> <WrapPanel/