事件是用户或者浏览器自己执行的某种动作,是文档或者浏览器发生的一些交互瞬间,比如点击(click)按钮等,这里的click就是事件的名称。JS与html之间的交互是通过事件实现的,DOM支持大量的事件。DOM 事件模型这个知识点,在面试的时候也是常考知识~
DOM事件模型本身就是解释元素有绑定函数执行顺序。
举例,图中[td]被点击,其上节点[tr]到[window]都可以加上onclick事件去执行函数。函数执行顺序分两种,从[window]到[tr]定义为捕获,从[tr]到[window]定义为冒泡。
先捕获还是先冒泡?
绑定在被点击元素的事件是按照代码的顺序发生的,其他非绑定的元素则是通过冒泡或者捕获的触发。按照W3C的标准,先发生捕获事件,后发生冒泡事件。所以事件的整体顺序是:非目标元素捕获 -> 目标元素代码顺序 -> 非目标元素冒泡
可以通过addEventListener的第三个参数控制
e.addEventLisenter('click',f2,true) // true按捕获方向执行函数
e.addEventLisenter('click',f2,false) // false按冒泡方向执行函数