事件捕获/事件冒泡

  1. 事件捕获:Outer -> inner, 事件冒泡:Inner -> Outer;

  2. 一个事件的的发生,先后经历事件捕获、事件冒泡两个阶段,

    形成一个闭合的事件传递链,即document -> ..->target DOM -> ... -> document(有些浏览器(如Firefox)可能是起点和终点window);

  3. 事件捕获:即事件发生后,浏览器确定该事件所属的最具体DOM;

    事件冒泡:每个DOM发生的事件,显然也在其祖先DOM中,故祖先DOM也应被通知;

  4. IE8.0以下只支持事件冒泡;

  5. addEventListener中可以控制注册的handler被调用是在事件捕获时还是事件冒泡时;

  6. e.preventDefault()阻止某些DOM的默认事件处理行为,如a标签的单击,默认会打开链接, 提交按钮单击会提交表单等;

    e.stopPropagation()阻止事件在事件链中的继续传递,如果在事件捕获阶段调用,则后面的事件冒泡将不再发生;

  7. 同一DOM上同一事件注册多个handler时,Chrome/Firefox按照队列的方式调用,IE则是栈的方式处理,W3C规定按照队列方式处理。


你可能感兴趣的:(事件冒泡,事件捕获)