事件对象是js处理用户交互的核心,通过参数获取、判断类型与来源、读取鼠标/键盘状态、控制行为四大方向精准使用。

事件对象(event)在 JS 中是处理用户交互的核心载体,它自动传入事件处理函数,封装了事件发生时的上下文信息。关键不在于“能不能拿到”,而在于“怎么准确取、用对地方”。下面分几个高频实用方向说明。
一、获取 event 对象的几种方式
现代浏览器统一通过函数参数接收,但兼容旧环境仍需注意写法:
- 使用
addEventListener:event 自动作为第一个参数传入,直接命名如e或event即可 - 内联写法(如
onclick="handler(event)"):必须手动把event作为实参传进去 - IE8 及更早版本需回退到
window.event,通用兼容写法为:const e = event || window.event;
二、判断事件类型与来源元素
type 和 target 是最基础也最常组合使用的两个属性:
-
e.type返回字符串,比如"click"、"keydown"、"input",适合做条件分支 -
e.target指向实际触发事件的 DOM 元素(哪怕你绑在父级上),例如点击子按钮,e.target就是那个按钮本身 -
e.currentTarget始终指向当前绑定事件监听器的那个元素,和e.target在事件冒泡中可能不同
典型场景:给一个列表容器绑定 click,用 e.target 判断是否点中了某个 <li>,再执行对应操作。
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
三、获取鼠标或键盘的实时状态
不同事件携带不同数据,用错属性会拿不到值:
- 鼠标类事件(
click、mousemove等)可用:
•e.clientX/e.clientY:相对于视口左上角的坐标(不含滚动偏移)
•e.pageX/e.pageY:相对于整个文档左上角(含滚动距离)
•e.screenX/e.screenY:相对于物理屏幕左上角(基本不用) - 键盘类事件(
keydown、keyup)中:
• 推荐用e.key(返回字符,如"a"、"Enter")或e.code(返回物理键位名,如"KeyA"、"Enter")
•e.keyCode已废弃,不应再使用
四、控制事件行为的常用方法
这些不是属性,但属于 event 对象不可少的能力:
-
e.preventDefault():取消默认行为,比如阻止表单提交、链接跳转、空格键滚动页面 -
e.stopPropagation():阻止事件继续向上冒泡,避免父级监听器被意外触发 -
e.stopImmediatePropagation():不仅阻止冒泡,还阻止同一元素上其他同类型监听器执行 -
e.bubbles属性只读,用于判断该事件类型本身是否支持冒泡(如click是true,focus是false)
注意:preventDefault 和 stopPropagation 不影响事件对象本身的属性读取,可以放心放在逻辑开头调用。










