JavaScript
是一种基于对象(Object
)和 事件驱动(Event Driven
) 并具有安全性能的脚本语言。
JavaScript
和HTML
之间的交互就是通过一系列的事件来实现的。
一. 什么是事件
JavaScript
和HTML
之间的交互是通过事件实现的,
事件就是文档或浏览器窗口中发生的一些特点的交互瞬间,
可以使用侦听器或处理程序来预订事件,以便事件发生时执行相应的代码.
事件,就是用户或者是浏览器执行的某种动作。
比如:click
、load
等都是事件的名字。
二. 事件流
事件流描述的是从页面中接收事件的顺序。 有两种事件流:冒泡流和捕获流
2.1 冒泡流
IE 的事件流 叫做事件冒泡(event bubbling
),
即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。
<!DOCTYPE html>
<html>
<head>
<title>Event Bubbling Example</title>
</head>
<body>
<div id="myDiv">Click Me</div>
</body>
</html>
现在点击div
元素,则事件的传播顺序是冒泡的方式从底层向上传播。
2.2 捕获流
Netscape Communicator
团队提出的另一种事件流叫做事件捕获(event capturing
)。
事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点应该最后接收到事件。
2.3 DOM
事件流
DOM2
级事件规定的事件流包括三个阶段:
事件捕获阶段、
处于目标阶段
事件冒泡阶段。
首先发生的是事件捕获,为截获事件提供了机会。
然后是实际的目标接收到事件。
最后一个阶段是冒泡阶段,可以在这个阶段对事件做出响应。
注意:IE9、Opera、Firefox、Chrome 和 Safari 都支持 DOM 事件流;IE8 及更早版本不支持 DOM 事件流。
目前所有的浏览器默认都是在冒泡阶段触发,当然我们也可以更改触发阶段。(dom2
级事件处理程序)