概述
JavaScript与HTML之间的交互通过事件实现。事件,就是文档或者浏览器窗口中发生的一些特定的交互瞬间.
事件流
当单击页面上的按钮时,你也单击了按钮的容器元素,甚至也单击了整个页面,那这几个元素的接收到事件的顺序是如何呢?
事件流就是指从页面中接收事件的顺序。事件流有以下两种:
事件冒泡
事件开始时从最具体的元素接收,然后逐级向上传播,也就是说如果点击一个元素,该元素的点击事件先发生再传播至上一级
事件捕获
事件从最不具体的元素开始,到你真正接收事件的节点逐级向下传播,也就是说点击一个元素,若document有点击事件,则先发生document事件,再发生至你点击的元素
DOM事件流
‘DOM2级事件’规定的事件流包括三个阶段:事件捕获、处于目标阶段和事件冒泡阶段。
先后顺序:
事件捕获,为截获事件提供机会-->实际的目标接收到事件-->事件冒泡,在这个阶段对事件做出响应。
事件处理程序
事件是用户或者浏览器自身执行的某种动作,那么事件处理程序就是响应某个事件的处理函数,事件处理程序的名字以‘on’开头
HTML事件处理程序
<input type="button" value="点击我" onclick="alert('我被点击了')">
DOM0级事件处理程序
var btn = document.querySelector('#clickMe')
btn.onclick = function() {
alert('我被点击了')
}
DOM2级事件处理程序
btn.addEventListener('click', function() {
alert('我被点击了')
}, true)
DOM2级事件定义了两个方法,用于处理指定和删除事件处理程序的操作:addEventListerner和removeEventListener,它们接收三个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。
最后这个布尔值参数如果是true,表示再捕获阶段就调用事件处理程序;如果是false,则是再冒泡阶段调用事件处理程序
好处:可以添加多个事件处理程序
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。