事件

135 阅读3分钟

事件介绍及注册事件

1.事件:js处理用户交互的一种机制

  • 交互:什么元素在什么时刻做什么事

2.事件的三要素:组成事件的三要素

  • 事件源:什么元素(div p)
  • 事件类型:什么时刻(鼠标点击onclick 鼠标移入:onmouseover)
  • 事件处理函数:做什么事(一段代码:函数)

3.注册事件:本质是给元素属性赋值

  • 事件源.事件类型 = 事件处理函数
  • box.onclick = function(){}

4.事件工作原理

  • a.事件在注册的时候,不会执行(函数在声明的时候不会执行)
  • b.一旦元素注册事件之后,当用户触发了这个事件的时候,浏览器会自动捕捉到这个事件,然后帮我们调用元素对象的事件处理函数

5.页面中 任何元素都可以注册很多个事件(点击,移入等)

事件知识点补充

addEventListener注册事件(如何给一个元素添加多个相同事件)

1.点语法注册事件:     事件源.事件类型 = 事件处理函数
    * 特点:不能注册‘同名事件’, 否则会覆盖
2.事件源.addEventListener('事件类型',事件处理函数)
    * 特点:可以注册‘同名事件’,依次触发

removeEventListener移除事件

  • 移除事件 : 参数与addEventListener一致
  • 注意点: 只能移除具名函数, 无法移除匿名函数

阻止默认事件

1.html中有部分标签自带点击事件 :   form表单,a标签
2.如果给这些标签注册点击事件,会默认跳转
3. 阻止默认事件 : 执行自己注册的事件
    e.preventDefault()

事件对象

1-事件对象介绍

1.事件对象 :存储与事件触发相关信息(事件触发点,键盘信息)的对象
2.获取事件对象 : 给事件处理函数添加一个形参 event  ev  e

2-事件对象常用属性

事件对象常用属性: e.pageX / e.pageY : 获取鼠标触发点到页面左上角距离

3-键盘事件及获取按键

1.键盘事件总结
  onfocus : 成为键盘焦点
  onblur  : 失去键盘焦点
  oninput : 键盘输入
    * 实时获取输入内容
  onkeydown : 键盘按下
    * 监听enter键
  onkeyup   : 键盘松开
2.如何获取用户按键
  e.key :  获取字符串 'Enter'
  e.keyCode : 获取键盘码ASCII码 13
    * 键盘上每一个按键对应一个数字,称之为ASCII码

事件流与事件委托

1-事件冒泡介绍

事件冒泡: 当触发子元素的事件时,该子元素的所有“父级元素” 的“同名事件”会依次触发

  • 事件冒泡现象一直都存在,只是以前没有给父元素注册同名事件
  • 子元素 -> 父元素 -> body -> html -> document -> window

2-事件委托(重点)

事件委托: 给父元素注册事件,委托子元素来处理
  2.1 事件委托原理:事件冒泡
  2.2 事件委托注意点 : 不能使用this
      this: 事件源,指向父元素
      e.target: 事件触发源,指向具体触发这个事件委托的子元素

3-事件捕获(了解)

1.事件捕获 : 与事件冒泡完全相反。触发子元素的事件时,会先从最顶级父元素window一级一级往下触发。
    window -> document -> html -> body -> 父元素 -> 子元素
2.默认情况下注册的事件都是冒泡类型事件,只有唯一的一种语法可以注册捕获类型事件
    addEventListener() : 第三个参数为true

4-事件流三个阶段

  1. 事件捕获
  2. 事件目标
  3. 事件冒泡

5-阻止事件流动

阻止事件流动: e.stopPropagation()

  • 无论是冒泡还是捕捉都可以阻止(停止事件流)