前面我们基本结束了界面生成部分,下面开始进入交互部分。

XUL的事件处理方式与HTML中的基本类似。对于需要响应事件的元素,只要在元素中增加相应的事件处理函数即可。如:

<menuitem label=”Close” accesskey=”c” oncommand=”window.close();”/>

 
<button id=”cancel-button” label=”Cancel”
     oncommand=”window.close();”/>

这个例子并未使用自定义的函数,而是直接使用DOM对象的方法进行调用。对于自定义的方法可以在XUL文件中设置script元素,将代码放在script代码中即可。或者在script中设置src属性,指向javascript代码文件。在XUL中目前都是使用javascript来进行程序处理的。

基本可响应的事件可以看原教程。

事件模型

XUL使用与DOM2 Events描述的事件模型一样。(至于DOM2 事件模型到底怎么回事我也没仔细看过,如果需要再了解好了)简单地说,一个事件的发送有两个状态:捕获状态和冒泡状态。在捕获状态,一个事件先发送到document,然后按照元素的分级结构层层传递,直到触发事件的元素。冒泡状态是反方向传递。

在处理路径上,如果事件被某个元素处理,那么事件传递即结束,如果没有被处理,则继续传到下一个元素。如果都没有处理,则缺省的处理被执行。这就意味着,不一定要把事件处理放在触发事件的元素上,而是放在它的父元素中进行处理。

如果一个事件被处理,处理函数应该返回true,如果返回false则表示未被处理。因此,有时可以在处理了事件后,仍然返回false,从而使事件可以继续传递。

你可以使用event对象的target属性来得到触发事件的元素,如:

<window
    onclick=”alert(event.target.tagName); return false;”
    .
    .
    .
>

当你在窗口中点击任何一个元素时,都会引发一个alert对话框,它将显示被点击的元素的名字。


6条评论

  1. mozilla实现了XMLHttpRequest 这个object,可以利用

    javascript 来生成,并向后台发送,但是web服务器应该如何响应呢??困扰中!呵呵

  2. XMLHttpRequest结合xul是大势所趋吧,如果整个界面都刷新,用户的感觉会怎么样呢?所以使用xul,XMLHttpRequest是驱动的关键:)

  3. 有没有前面几章的评论/翻译?

    刚开始学XUL

  4. 后面的可能没有,但前面的有。去xul专栏找吧。

  5. 你好,我刚接触XUL,想弄个XUL中文网,有兴趣加入么?

    域名已经注册好了 xulcn.com

    msn: gavin2026@hotmail.com

  6. 你好。我现在没有精力去学习XUL了。

发表评论

评论也有版权!