博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS小tips 之 事件处理程序中的三个阶段
阅读量:5218 次
发布时间:2019-06-14

本文共 1350 字,大约阅读时间需要 4 分钟。

理解JS事件处理程序中的三个阶段:捕获阶段、处于目标阶段、事件冒泡阶段

注意:所有图片及代码来自《JavaScript高级程序设计》,为了能用具体的例子加深对三个阶段的理解。

   

test for event    
  • 代码一:
    var btn = document.getElementById("myBtn");btn.onclick = function(event){    alert(event.currentTarget === this); //true    alert(event.target === this);//true};document.body.onclick = function(event){    alert(event.currentTarget === document.body);//true    alert(this === document.body); // true    alert(event.target == btn); // true};

    解释:

    1、currentTarget和this始终指向事件注册的位置,而target指向的是事件发生的对象(此处是按钮);
    2、显然,在单击按钮后,首先btn的事件触发,然后冒泡到document.body上,此时event.target仍然是btn,this和currentTarget却已经指向document.body了。

  • 代码二:
    var btn = document.getElementById("myBtn");btn.onclick = function(event){    alert("Clicked");    event.stopPropagation();};document.body.onclick = function(event){    alert("Body clicked"); //不会弹出。};

    解释:

    stopPropagation()阻止了冒泡或者捕获过程。而document.body有注册在冒泡过程的事件,这个事件不会执行了。

  • 代码三:
    var btn = document.getElementById("myBtn");btn.onclick = function(event){    alert(event.eventPhase); // 2};document.body.addEventListener("click", function(event){alert(event.eventPhase);},true);// 1. 注册在捕获阶段document.body.onclick = function(event){    alert(event.eventPhase); // 3};

    解释:

    eventPhase:1--捕获阶段;2--处理阶段;3--冒泡阶段

    addEventListener()第三个参数为true,表示注册在捕获阶段。

    因此警告框显示的顺序应该是1-2-3.

转载于:https://www.cnblogs.com/ideal-idiot/p/7779303.html

你可能感兴趣的文章
JNI学习笔记二
查看>>
android软电话开发预备知识
查看>>
多次向文件结尾写入数据
查看>>
读书印记 - 《反脆弱》
查看>>
LAMP环境搭建
查看>>
puppet安装配置及使用
查看>>
better-scroll的使用
查看>>
条件DP UVA 672 Gangsters
查看>>
一个商业智能培训经理眼中的商业智能
查看>>
Quartz.Net 配置模板范例
查看>>
程序员怎样才能达到编程的最高境界
查看>>
H5混合开发中android终端和ios终端常见的兼容问题2
查看>>
红外接收头在内核里的驱动
查看>>
4. hadoop启动脚本分析
查看>>
HDU HDU1558 Segment set(并查集+判断线段相交)
查看>>
Windows Phone WebClient的使用
查看>>
Java 内部类
查看>>
mycat 分库分表
查看>>
爬虫-基于scrapy-redis两种形式的分布式爬虫
查看>>
模块_使用M2Crypto加密数据
查看>>