事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。
事件流,描述的是从页面中接收事件的顺序。
早期的浏览器主要是IE和Netscape,它们在处理事件流时是完全相反的,IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流。
事件冒泡(event bubbing),即事件开始时由最具体的元素(嵌套最深的节点)接收,然后逐级向上传播到较为不具体的节点(文档)。【4-5-6-7】
事件捕获(event capturing),与冒泡相反,由不太具体的节点先接收,再逐级向下传播到具体到节点。【1-2-3-4】
现代浏览器处理时事件流顺序为先捕获在冒泡【1-2-3-4-5-6-7】,并且只在冒泡时响应事件,比如在body上添加了点击事件的监听,在5阶段才回响应,在3阶段是不会接收传播的。
事件委托,也叫事件代理,就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。
<body>
<div id="divUl">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>
<script>
document.getElementById('divUl').onclick = function (e) {
console.log(e.currentTarget); //<div id='divUl'>...</div>
console.log(e.target); //<li>2</li>
}
</script>
</body>
当点击在<li>标签上时,响应的是div的点击事件,但获取到e.target就是实际点击的要素
通过事件模拟可以用js脚本来模拟触发用户交互事件,详情查看后续文章
网友评论