重学前端
程劭非(winter)
前手机淘宝前端负责人
105348 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
开篇词+学习路线+架构图 (3讲)
重学前端
15
15
1.0x
00:00/00:00
登录|注册

浏览器事件:为什么会有捕获过程和冒泡过程?

捕获还是冒泡
事件处理函数
事件名称
成功原因
由来
共性与区别
触摸屏
鼠标
键盘
自定义事件
焦点机制
捕获与冒泡机制
触发自定义事件
创建自定义事件
操作焦点的API
焦点系统
键盘事件控制
addEventListener参数
事件传播顺序示例
冒泡过程
捕获过程
点击事件来源
WIMP系统
pointer设备
输入设备
WIMP的小故事
总结
自定义事件
焦点
捕获与冒泡
事件概述
浏览器事件

该思维导图由 AI 生成,仅供参考

你好,我是 winter。这一节课,我们进入了浏览器的部分,一起来学习一下事件。

事件概述

在开始接触具体的 API 之前,我们要先了解一下事件。一般来说,事件来自输入设备,我们平时的个人设备上,输入设备有三种:
键盘;
鼠标;
触摸屏。
这其中,触摸屏和鼠标又有一定的共性,它们被称作 pointer 设备,所谓 pointer 设备,是指它的输入最终会被抽象成屏幕上面的一个点。但是触摸屏和鼠标又有一定区别,它们的精度、反应时间和支持的点的数量都不一样。
我们现代的 UI 系统,都源自 WIMP 系统。WIMP 即 Window Icon Menu Pointer 四个要素,它最初由施乐公司研发,后来被微软和苹果两家公司应用在了自己的操作系统上(关于这个还有一段有趣的故事,我附在文末了)。
WIMP 是如此成功,以至于今天很多的前端工程师会有一个观点,认为我们能够“点击一个按钮”,实际上并非如此,我们只能够点击鼠标上的按钮或者触摸屏,是操作系统和浏览器把这个信息对应到了一个逻辑上的按钮,再使得它的视图对点击事件有反应。这就引出了我们第一个要讲解的机制:捕获与冒泡。

捕获与冒泡

很多文章会讲到捕获过程是从外向内,冒泡过程是从内向外,但是这里我希望讲清楚,为什么会有捕获过程和冒泡过程。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

浏览器事件机制包括捕获和冒泡过程,捕获是计算机处理事件的逻辑,而冒泡是人类理解事件的思维。在实际监听事件时,建议默认使用冒泡模式,但在开发组件时,需要父元素控制子元素的行为时,可以使用捕获机制。焦点系统控制键盘事件,而自定义事件可以在特定元素上触发。文章还提到了WIMP系统的由来,以及乔布斯和盖茨对其设计的争议。整体而言,本文介绍了浏览器事件的基本概念和相关API的使用,以及一些有趣的历史故事。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《重学前端》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(24)

  • 最新
  • 精选
  • 令狐洋葱
    老师对于这类历史还是有一些了解的哈,不知道这类知识哪里获取的,是想了解就去搜索的么?

    作者回复: 前面有讲学习方法

    2019-08-15
    1
  • 🔅fighting🔅
    01:UI事件,load,unload判断页面是都加载完成; 02:焦点事件,focus,blur 03:鼠标事件,click,dbclick,mousedown,mouseup,scroll 04:键盘事件 keydown,keyup,keypress,textInput,
    2019-08-16
    1
    14
  • 阿成
    事件的种类对应了浏览器的能力,我们并不需要记住所有的事件及其细节,我们只需要在用到某种能力的时候去查找相应的事件类型下的某一事件即可。 补充一下楼下仁兄的答案:移动端设备上的touch系列,以及新标准(好像也挺多年了,不过兼容性让人望而却步...)的pointer系列
    2019-04-16
    13
  • injser
    评论越来越少...果然贵在坚持
    2019-05-30
    4
    11
  • zgy
    冒泡和捕获就好比蛛网和昆虫,蜘蛛通过蛛网晃动捕获昆虫位置,昆虫挣扎晃动蛛网将位置传给蜘蛛。
    2021-06-01
    1
    6
  • bestRktnZnnn
    请问自定义事件主要应用场景是什么呢
    2019-05-23
    3
    6
  • Even
    https://developer.mozilla.org/zh-CN/docs/Web/Events 直接看MDN
    2019-04-26
    5
  • junjun
    感觉讲的最好和实际应用联系起来,不然完全看不出有什么意义,毕竟最后还是为了应用。
    2019-10-09
    1
    4
  • james
    事件触发的顺序总是 先从外向内捕获,然后再从内向外冒泡 我们的心智模型是习惯于从内向外冒泡 01:UI事件:load,unload判断页面是都加载完成; 02:焦点事件:focus,blur 03:鼠标事件:click,dbclick,mousedown,mousemove,mouseup,scroll 04:键盘事件:keydown,keyup,keypress,textInput
    2020-06-20
    1
  • 马成
    事件触发的顺序总是 先从外向内捕获,然后再从内向外冒泡
    2019-09-05
    1
收起评论
显示
设置
留言
24
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部