【前端入门】如何让 DOM 节点监听事件,准备开启学习DOM的事件编程!

100 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情

事件的本质是程序各个组成部分之间的一种通信方式,也是异步编程的一种实现。DOM 支持大量的事件!

在学习事件编程之前,得先来学习如何让 DOM 节点监听事件~

DOM 节点的事件操作(监听和触发),都定义在EventTarget接口,主要提供三个实例方法

  • addEventListener():绑定事件的监听函数
  • removeEventListener():移除事件的监听函数
  • dispatchEvent():触发事件

EventTarget.addEventListener(),即添加监听函数

EventTarget.addEventListener()用于在当前节点或对象上,定义添加一个特定事件的监听函数。事件发生,就会执行监听函数。注意:该方法没有返回值哦~

  • type:事件名称,大小写敏感。
  • listener:监听函数。事件发生时,会调用该监听函数。
  • useCapture:布尔值,如果设为true,表示监听函数将在捕获阶段(capture)触发。该参数可选,默认值为false

特别的:useCapture还可以是一个监听器配置对象,定制事件监听行为。有以下属性:

  • capture:布尔值,如果设为true,表示监听函数在捕获阶段触发,默认为false
  • once:布尔值,如果设为true,表示监听函数执行一次就会自动移除,后面将不再监听该事件。该属性默认值为false
  • passive:布尔值,设为true时,表示禁止监听函数调用preventDefault()方法。如果调用了,浏览器将忽略这个要求,并在控制台输出一条警告。该属性默认值为false
  • signal:该属性的值为一个 AbortSignal 对象,为监听器设置了一个信号通道,用来在需要时发出信号,移除监听函数(其实这条有点不太懂,还在琢磨这个细节==)

EventTarget.removeEventListener(),即移除监听函数

EventTarget.removeEventListener()方法用来移除addEventListener()方法添加的事件监听函数。该方法没有返回值,参数与添加监听函数完全一致~

注意:removeEventListener()方法移除的监听函数,必须是addEventListener()方法添加的那个监听函数,而且必须在同一个元素节点,否则无效!

EventTarget.dispatchEvent()

EventTarget.dispatchEvent()方法在当前节点上触发指定事件,从而触发监听函数的执行

该方法返回一个布尔值,只要有一个监听函数调用了Event.preventDefault(),则返回值为false,否则为true

如果dispatchEvent()方法的参数为空,或者不是一个有效的事件对象,将报错!

写在最后

以上习题&笔记从大佬们的论坛学习而来,特感谢大佬们的知识分享~ (学习技术知识,果然要看大佬们的技术博客,大家有好的推荐也欢迎指引我这个小白哈,感恩!)

附上学习链接,感谢这些大佬出题和解答:wangdoc.com/javascript/…