本文配套源码
原文标题:XUL Tutorial - Bindings - XBL Inheritance
原文作者:Neil Deakin
原文地址:http://www.xulplanet.com/tutorials/xultu/xblinherit.html
下面是对原文的翻译:
在这一小节,我们将学习如果对已有的XBL定义进行扩展。
继承(Inheritance)
有时你要建立的组件可能和现有的某个组件很相似,比如你想建立一个可以弹出菜单的按钮,一种方法是重复造车轮,复制现有的button代码,但有一种更好的方法,就是继承现有的button代码。
所有的绑定项都可以被扩展,而且子绑定项可以额外添加属性、方法和事件处理程序。子绑定项也同时具有在父绑定项中定义的所有功能(还包括父绑定项的父绑定项的所有功能,一直按照树型模型追溯下去的所有功能)。
要扩展一个现有的绑定项,首先要向binding标记中增加extends特性。比如下面这个例子,建立了一个文本框,而且当按下F4键的时候会向文本框的内容前添加“http://www”。
实例11.7.1:源代码
<binding id="textboxwithhttp"
extends="chrome://global/content/bindings/textbox.xml#textbox">
<handlers>
<handler event="keypress" keycode="VK_F4">
this.value="http://www"+value;
</handler>
</handlers>
</binding>
上面这个绑定项就是从textbox元素扩展出来的。extends特性中对应的URL指的是textbox元素对应的绑定项的实际地址。这就意味 着我们继承了所有textbox绑定项提供的行为和内容。另外,我们又增加了一个keypress事件用于响应按F4键这个动作。
自动完成输入的文本框(Autocompleting TextBoxes)
下面的例子类似于Mozilla自带的地址自动输入功能。从基本文本框的绑定项继承下来的文本框都将支持自动完成输入的功能。
自动完成输入的文本框额外增加了一个事件句柄,当在文本框输入内容的时候,一个判断后续内容的列表就会自动显示出来。你可以在自己的应用程序中使用这项功能,只需要建立一个附加两个额外特性的文本框即可。
<textbox type="autocomplete" searchSessions="history"/>
将type特性设置为autocomplete,这样就将自动完成输入功能添加到文本框中。通过searchSessions设置在什么地方查找数 据,在这个例子中,设置成history,代表从URL的历史记录中查找数据。(还可以设置为addrbook,代表从地址本中查找数据)
在下一小结,我们将利用前面学到的知识完整构建一个XBL组件。