Dom中的事件传递机制
Dom中的事件处理机制:
1.两种事件传递机制:捕获和冒泡
1.1 event capture:从父标签到子标签
1.2 event bubble:从子标签到父标签
1.3 W3C中的事件传递机制
复制一张W3c中关于事件处理机制的一张图片,从图中可以看出可以分为capture捕获阶段,target响应阶段,bubble冒泡阶段。
2.当一个事件Event object产生之后,由哪些标签(也就是event Target)去响应该事件?系统做了几件事情。
2.1 产生一个关于事件的传播路径(),它是一个eventTarget的有序列表,它反映了dom的层级树结构。
2.2 在传播路径确定之后,Event object被传递到Cature pgase,Target Phase,Bubble Phase。需要注意的是
a.如果eventTargets中的某一个target的cancelBubble为ture时,冒泡将在该eventTarget的事件执行完之后结束。
b.如果eventTargets中的某一个target调用了stopPropagation(),那么事件到此结束。不再执行冒泡阶段。
3.开发中的capture和bubble
3.1 直接为标签的相关属性赋值,比如为onclick赋值一个函数,该函数会在事件处理流程中的bubble阶段响应。
3.2EventTarget.addEventListener(type,handler,option) 为target增加的监听者中的option可以指出响应的阶段是在capture阶段还是bubble阶段。
3.3 event对象的cancleBubble 属性表示是否冒泡,stopPropagation()表示是否终止事件传递。