JavaScript 和 事件(事件模型)

事件模型

事件一直是脚本编写中比较复杂的一部分,因为事件模型在不同的浏览器中会有所不同。事件模型定义了事件的处理方式和调用哪些对象。目前,主要的不同在于IE 模型和W3C DOM 事件模型间事件流的不同(在Mozilla-based 浏览器中使用的事件模型与W3C DOM模型相似)。

处理事件流的技术主要有两种。在事件冒泡(event bubbling)技术中,事件从最具体(most-specific)的目标到最不具体(least-specific)的目标触发。事件目标(event target)是事件最初发生的位置。在事件捕获(event capturing)技术中,事件从最不具体的目标到最具体的目标触发。

下面的示例是最好的例证:

<div>  <p>Event order </p>  </div>

如上所示,子元素(p)嵌套在父元素(div)中,这两个元素都有相同的事件处理程序(onmouseover)。如果用户鼠标滑过该子元素,就会为这两个元素创建mouseover 事件。但是首先触发哪个事件呢?

在事件捕获技术中,父元素(div)的mouseover 事件首先触发。在事件冒泡技术中,子元素(p)的mouseover事件首先触发。

      Internet Explorer(包括IE 7)使用的是事件冒泡技术。W3C DOM模型则包括事件捕获和事件冒泡两种技术。

文章摘选自《Ajax 入门经典》(Beginning Ajax)Chris Ullman, Lucinda Dykes 著   徐璐 译   清华大学出版社

留下评论