美文网首页
5.事件流

5.事件流

作者: 素弥 | 来源:发表于2016-10-13 23:51 被阅读27次

如果有一个事件,当这个事件发生后,就会开始执行一个流程,分为三个阶段,捕获、目标、冒泡,这个流程称之为事件流

捕获阶段

在事件发生时,从最外层向目标元素寻找的一个过程
window → document → html → body → ... → 目标元素的父级 → 目标元素

目标阶段

找到目标元素之后,如果该元素身上有事件处理函数,则它会执行事件处理函数(这里不分冒泡和捕获,只分代码的先后顺序,谁在前,就先执行谁)

btn.addEventListener('click',function(){
    console.log('捕获阶段');
},true);
btn.addEventListener('click',function(){
    console.log('冒泡阶段');
},false);
//这段代码在点击以后,控制台输出的顺序是 1.'捕获阶段' 2.'冒泡阶段'
btn.addEventListener('click',function(){
    console.log('冒泡阶段');
},false);
btn.addEventListener('click',function(){
    console.log('捕获阶段');
},true);
//这段代码在点击以后,控制台输出的顺序是 1.'冒泡阶段' 2.'捕获阶段'

冒泡阶段

从目标元素的上一层开始往外层寻找的一个过程
目标元素 → 目标元素的父级 → ... → body → html → document →window

注意

不论是捕获阶段还是冒泡阶段,在寻找目标元素还有向外返回的过程中,所遇到的每一个元素,如果它们身上有相同事件,那么它们的事件处理函数都会被调用

即如果通过click事件触发了事件流的形成,那么在捕获或者冒泡阶段(除去目标元素),碰到的任何具有click事件的元素,它们身上的事件处理函数都会执行
但是这里会存在一个执行阶段的问题:
碰到的具有click事件的元素,如果它的click事件是由addEventListener( , ,false)或者on来添加的,那么则会在冒泡的过程中,执行这个函数
碰到的具有click事件的元素,如果它的click事件是由addEventListener( , ,true)来添加的,那么则会在捕获的过程中,执行这个函数

相关文章

  • 5.事件流

    如果有一个事件,当这个事件发生后,就会开始执行一个流程,分为三个阶段,捕获、目标、冒泡,这个流程称之为事件流 捕获...

  • 手写事件模型及事件代理/委托

    事件流:事件流所描述的就是从页面中接受事件的顺序。IE:IE事件流是事件冒泡流;Netscape事件流是事件捕获流...

  • JavaScript事件探秘

    一、事件流 事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流...

  • 事件

    1. 事件 IE的事件流是事件冒泡流Netscape是的事件流是事件捕获流 DOM事件流 :规定事件包括三个阶段:...

  • JavaScript事件捕获冒泡与捕获

    事件流 JavaScript中,事件流指的是DOM事件流。 概念 事件的传播过程即DOM事件流。 事件对象在 DO...

  • 事件流and事件处理程序

    事件流 什么是事件流 事件流描述得是从页面中接收事件的顺序 IE的事件流是事件冒泡流 Netscape Commu...

  • JS--事件(一)

    事件流 事件流描述的是从页面中接受事件的顺序,在IE中的事件流是事件冒泡,在Netscape的事件流是事件捕获流。...

  • 事件

    事件流 描述的是从页面中接收事件的顺序。 IE——事件冒泡流 Netscape——事件捕获流 事件冒泡流:即事件最...

  • JavaScript事件01——事件流

    大纲:概念(事件、事件流)事件流模型(事件冒泡、事件捕获、DOM事件流) 一、概念: 1、事件:事件就是用户或浏览...

  • 事件基础(2)

    js事件的三个阶段:捕获,目标,冒泡 IE:IE事件流是事件冒泡流 Netscape事件流是事件捕获流 IE事件...

网友评论

      本文标题:5.事件流

      本文链接:https://www.haomeiwen.com/subject/vgowyttx.html