事件对象

72 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情

什么是事件对象?

先举个例子:

  • 当你触发了一个点击事件时,你点击的是哪个位置,坐标是多少
  • 当你按下键盘的时候,你按的是哪个键

这些信息都会被记录下来,每一个事件都会有一个相应的对象来描述或者是存储这些信息,这个对象就是事件对象。

在我看来呢,这就相当于是一个盒子,里面包括了我们触发事件之后所能获得的全部所有信息。事件对象就是我们事件处理函数中的形参,之后我们的操作就是给它把实参传进去,让他去记录各种错综复杂的信息。这个形参没有规定的书写规范,不管你怎么写都是可以的。不过自己定义的话不如规范一点的写成event(缩写:evt)还方便其他人的阅读。

形参呢还有一些小小的兼容性问题,就是在低版本的IE浏览器中不能直接使用event,要写成window.event

 //就拿一个键盘松开的事件来演示一下
 //低版本的IE中这样写
 username.onkeyup=function(event){
    console.log(window.event);
}

事件对象--鼠标事件

熟悉一下鼠标事件对象中几个容易混乱的坐标值

  • clientX,clientY 距离浏览器可视窗口的左上角的坐标值,当你滚动了滚动条时,就算你点击元素的同一位置,他的坐标值也会发生改变
  • pageX,pageY 距离页面文档流的左上角的坐标值,不管你如何滚动滚动条他都不会改变
  • offsetX,offsetY 距离触发元素的左上角的坐标值,当你这个事件源内还有一个元素,并且你在点击鼠标时点在了事件源的子元素上,那么这个子元素就会代替事件源变成触发元素,这个值也就变成了点击的点到子元素的左上角的坐标。