[JavaScript]基础事件

什么是事件

一个事件就是一个用户在访问网页时,所使用键盘或者鼠标对网页做出某种操作,这就是一个基础事件
在js中,用户与文档交互基础事件又分为鼠标事件与键盘事件
例如:

  • 当用户点击鼠标时
  • 当网页加载后
  • 当图像加载后
  • 当鼠标移至元素上时
  • 当输入字段被改变时
  • 当 HTML 表单被提交时
  • 当用户敲击按键时

示例演练:

  <div>我是一个div</div>
  <input type="text" id="input" value=''>
  <script>
    var oDiv = document.querySelector('div');
    //将事件匿名函数 赋值给 元素对象的 onclick属性 事件绑定
    //事件的回调函数 用户触发了 click操作的时候 执行了这个函数
    oDiv.onclick = function (event) {
      console.log(event); //event对象包含了当前这一次行为所有的事件信息
      console.log(event.target); //触发事件的目标 target 目标
      console.log(event.type); //事件类型
      console.log(event.pageX, event.pageY); //事件触发时 鼠标相对window的位置
      alert(this.innerText); //事件回调函数中的this指向 触发事件的对象 this => oDiv
    }
    var oInput = document.querySelector('#input');
    oInput.onkeydown = function () {//在input上敲下键盘按键的时候触发
      console.log(this.value);
    }
    oInput.onfocus = function () {//在input上敲下键盘按键的时候触发
      console.log('你聚焦在了input上');
    }
    oInput.onblur = function () {//在input上敲下键盘按键的时候触发
      console.log('input失去了焦点');
    }
  </script>

常见的事件

属性此事件发生在何时…
onabort图像的加载被中断。
onblur元素失去焦点。
onchange域的内容被改变。
onclick当用户点击某个对象时调用的事件句柄。
ondblclick当用户双击某个对象时调用的事件句柄。
onerror在加载文档或图像时发生错误。
onfocus元素获得焦点。
onkeydown某个键盘按键被按下。
onkeypress某个键盘按键被按下并松开。
onkeyup某个键盘按键被松开。
oninputinput输入框接收到输入内容时触发 H5 API
onload一张页面或一幅图像完成加载。
onmousedown鼠标按钮被按下。
onmousemove鼠标被移动。
onmouseout鼠标从某元素移开。
onmouseover鼠标移到某元素之上。
onmouseenter鼠标移到某元素之上。(不支持冒泡)
onmouseleave鼠标从某元素移开。(不支持冒泡)
onmouseup鼠标按键被松开。
onreset重置按钮被点击。
onresize窗口或框架被重新调整大小。
onselect文本被选中。
onsubmit确认按钮被点击。
onunload用户退出页面。

事件三要素

  • 事件源:触发(被)事件的元素
  • 事件类型:事件的触发方式(例如鼠标点击或键盘点击)
  • 事件处理程序:事件触发后要执行的代码(函数形式)

事件阶段

事件有三个阶段:

event.eventPhase属性可以查看事件触发时所处的阶段 :

  1. 捕获阶段
  2. 当前目标阶段
  3. 冒泡阶段

事件的捕获和冒泡

	1、事件捕获
	捕获型事件(event capturing):事件从最不精确的对象(document 对象)开始触发,然后到最精确(也可以在窗口级别捕获事件,不过必须由开发人员特别指定)
	也就是从外向内
	2、事件冒泡
	冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。
	也就是从内向外

注意: 绑定的事件默认的执行时间是在冒泡阶段执行,而非在捕获阶段(重要)。这也是为什么当父类和子类都绑定了某个事件,会先调用子类绑定的事件,后调用父类的事件

在这里插入图片描述
在这里插入图片描述

事件对象的属性和方法

  • event.type 获取事件类型
  • clientX/clientY 所有浏览器都支持,窗口位置
  • pageX/pageY IE8以前不支持,页面位置
  • event.target || event.srcElement 用于获取触发事件的元素
  • event.preventDefault() 取消默认行为

注:Event接口表示在DOM中发生的任何事件,一些是用户生成的(例如鼠标或键盘事件),而其他由API生成。

event对象属性

属性描述
altKey返回当事件被触发时,“ALT” 是否被按下。
shiftKey返回当事件被触发时,“SHIFT” 键是否被按下。
ctrlKey返回当事件被触发时,“CTRL” 键是否被按下。
metaKey返回当事件被触发时,“meta” 键是否被按下。
button返回当事件被触发时,哪个鼠标按钮被点击。
clientX返回当事件被触发时,鼠标指针的水平坐标。
clientY返回当事件被触发时,鼠标指针的垂直坐标。
keyCode表示非字符按键的unicode值。
isChar布尔值,表示当前按下的键是否表示一个字符
screenX返回当某个事件被触发时,鼠标指针的水平坐标。
screenY返回当某个事件被触发时,鼠标指针的垂直坐标。
pageX事件发生时相对于页面(如viewport区域)的水平坐标。
pageY事件发生时相对于页面(如viewport区域)的垂直坐标。
currentTarget事件冒泡阶段所在的当前DOM元素
target返回触发此事件的元素(事件的目标节点)。
eventPhase返回事件传播的当前阶段。
cancelable返回布尔值,指示事件是否可拥可取消的默认动作。
type返回当前 Event 对象表示的事件的名称。
timeStamp返回事件生成的日期和时间。
  • 43
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 74
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 74
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员云锦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值