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