在学习事件时,有几个重要的概念需要了解。
1、事件
用户与计算机交互的方法。可被理解为是JavaScript
侦测到的行为。
举例:这些行为指的就是页面的加载、鼠标单击页面、鼠标滑过某个区域等。它对实现网页的交互效果起着重要的作用。
2、事件处理程序
JavaScript
为响应用户行为所执行的程序代码。
举例:用户单击button
按钮,这个行为就会被JavaScript
中的click
事件侦测到;然后让其自动执行,为click
事件编写的程序代码,如在控制台输出“按钮被单击”。
3、事件驱动式
在Web
页面中JavaScript
的事件,侦测到的用户行为,并执行相应的事件处理程序的过程。
4、事件流
事件发生时,会在发生事件的元素节点与DOM
树根节点之间按照特定的顺序进行传播,这个事件传播的过程就是事件流。
对于事件流的传播顺序,网景(Netscape
)提出了“事件捕获方式”、微软(Microsoft
)提出了“事件冒泡方式”。
事件捕获方式(网景)
事件流传播的顺序应该是从DOM
树的根节点到发生事件的元素节点。
事件冒泡方式(微软)
事件流传播的顺序应该是从发生事件的元素节点到DOM
树的根节点。
W3C的解决方案
W3C
进行了中和处理,规定事件发生后,先实现事件捕获,但不会对事件进行处理。
接着进行到目标阶段,执行当前元素对象的事件处理程序,但它会被看成是冒泡阶段的一部分。
最后实现事件的冒泡,逐级对事件进行处理。
向下是捕获1-2-3-4
,向上是冒泡5,6,7,8