鼠标事件对象属性和方法详解

本文对浏览器中鼠标事件对象的属性和方法进行详细的说明,希望能够对有此需求的小伙伴提供方便和帮助。

1. isTrusted

Event接口的只读属性,用来判断事件是否是由用户行为触发的。

  • 当事件由用户行为触发时,值为true。
  • 当事件由脚本创建、修改或通过EventTarget.dispatchEvent()派发时,值为false。
javascript 复制代码
if (e.isTrusted) {
  /* Event 事件可信 */
} else {
  /* Event 事件不可信 */
}

2. altKey

表示鼠标事件发生时是否按下了alt键。

3. bubbles

返回一个布尔值,表示当前事件是否会向DOM树上层元素冒泡。

  • 一些特定的事件类型会冒泡,此时事件对象的bubbles属性为true。
  • 可以通过判断bubbles属性的值来确定一个事件对象是否冒泡。

4. button

表示鼠标事件中哪个按钮被按下。

  • 0:未按下任何按钮。
  • 1:按下左键。
  • 2:按下右键。
  • 3:同时按下左键和右键。
  • 4:按下中键(滚轮)。
  • 5:同时按下左键和中键(滚轮)。
  • 6:同时按下右键和中键(滚轮)。
  • 7:同时按下三个按钮。

5. buttons

表示鼠标按下的一个或多个按钮。

  • 数字标识每个按钮:0-未按下、1-左键、2-右键、4-滚轮或中键、8-第四个按钮(通常是"浏览器后退")、16-第五个按钮(通常是"浏览器前进")。
  • 如果同时按下多个按钮,则buttons的值是所有按钮标识值进行按位或(|)运算的结果。

6. cancelBubble

阻止事件冒泡的属性,在IE的事件机制中使用。

javascript 复制代码
event.cancelBubble = true;

7. clientX / clientY

MouseEvent.clientX和MouseEvent.clientY表示事件在客户端区域的水平和垂直坐标。

  • 不受页面水平和垂直滚动影响。
  • 点击客户端区域左上角时,clientX和clientY的值都为0。

8. composed

如果返回的布尔值为true,表示事件可以从shadow DOM传递到一般的DOM。

  • 前提是事件具有可传播性,即事件的bubbles属性必须为true。
  • 可以通过调用composedPath()方法查看事件从shadow DOM传递到普通DOM的路径。
  • 如果属性值为false,则事件不会跨越shadow DOM的边界传播。

9. ctrlKey

表示鼠标事件发生时是否按下了ctrl键。

10. currentTarget

Event接口的只读属性,表示事件当前所在的目标对象。

  • 它始终指向事件绑定的元素。
  • 与Event.target不同,Event.target表示事件触发的元素。

11. defaultPrevented

返回一个布尔值,表示当前事件是否调用了event.preventDefault()方法。

javascript 复制代码
if (e.defaultPrevented) {
  /* 事件的默认动作已被取消 */
}

12. detail

UIEvent.detail是只读属性,提供了与点击事件相关的当前点击数。

  • 对于click或dblclick事件,detail表示当前点击的数量。
  • 对于mousedown或mouseup事件,detail为1加上当前点击数。
  • 对于其他UIEvent对象,detail始终为0。

13. eventPhase

表示事件流当前处于的阶段。

  • Event.NONE:当前没有事件被处理。
  • Event.CAPTURING_PHASE:事件被目标元素的祖先对象处理,从Window开始,然后是Document,然后是父元素,直到目标元素的父元素。
  • Event.AT_TARGET:事件已经到达事件目标。对于AT_TARGET阶段注册的事件监听器将被调用。
  • Event.BUBBLING_PHASE:事件沿着DOM树逆向向上冒泡,从父元素开始,最终到达包含元素的Window。

14. fromElement

在IE中,用于mouseover事件,表示鼠标从哪个元素移入。 在IE中,用于mouseout事件,表示鼠标移出的元素。

15. layerX / layerY

MouseEvent.layerX是MouseEvent.clientX的别名,返回鼠标相对于当前层的水平坐标。 MouseEvent.layerY是MouseEvent.clientY的别名,返回鼠标相对于当前层的垂直坐标。

16. metaKey

MouseEvent.metaKey是一个布尔值,表示是否按下了meta键。

17. movementX / movementY

MouseEvent.movementX和MouseEvent.movementY表示鼠标指针在当前事件和上一个mousemove事件之间的水平和垂直移动距离。

18. offsetX / offsetY

MouseEvent.offsetX和MouseEvent.offsetY表示鼠标相对于目标节点内部填充区域的偏移量。

19. pageX / pageY

MouseEvent.pageX和MouseEvent.pageY表示鼠标点击时相对于整个文档左上角的水平和垂直坐标,包括页面不可见的部分。

20. path

事件冒泡路径上的所有对象组成的一个数组。

21. relatedTarget

MouseEvent.relatedTarget是鼠标事件的辅助目标(如果有的话)。

  • 对于mouseenter和mouseover事件,表示鼠标进入的目标元素和离开的目标元素。
  • 对于mouseleave和mouseout事件,表示鼠标离开的目标元素和进入的目标元素。
  • 对于dragenter和dragleave事件,表示鼠标进入的目标元素和离开的目标元素。
  • 对于其他事件,相关目标为null或未定义。

22. returnValue

Event.returnValue属性表示该事件的默认操作是否已被阻止。

  • 默认情况下,该属性的值为true,即允许进行默认操作。
  • 将该属性设置为false以阻止默认操作。

23. screenX / screenY

MouseEvent.screenX和MouseEvent.screenY表示鼠标指针在屏幕坐标中的水平和垂直位置。

24. shiftKey

表示鼠标事件发生时是否按下了shift键。

25. srcElement

Event.srcElement是标准的Event.target属性的别名,只对旧版本的IE浏览器有效。

26. target

触发事件的对象(DOM元素)的引用。

  • 当事件的处理程序在事件的冒泡或捕获阶段被调用时,target与currentTarget不同。
  • target表示事件触发的元素。

27. timestamp

返回事件发生时的时间戳。

28. toElement

相对于fromElement而言,在IE中使用。

29. type

只读属性Event.type返回表示事件对象的事件类型的字符串。 传递给EventTarget.addEventListener()和EventTarget.removeEventListener()方法的event参数的值是不区分大小写的。

30. view

view事件属性返回对发生事件的Window对象的引用。

31. which

event.which规范化了按钮按下(mousedown和mouseup事件)的返回值。

  • 左键返回1,中键返回2,右键返回3。
  • 使用event.which代替event.button。

32. x / y

MouseEvent.x是MouseEvent.clientX的别名,返回鼠标相对于当前屏幕区域的水平坐标。 MouseEvent.y是MouseEvent.clientY的别名,返回鼠标相对于当前屏幕区域的垂直坐标。

相关推荐
微臣愚钝3 小时前
前端【8】HTML+CSS+javascript实战项目----实现一个简单的待办事项列表 (To-Do List)
前端·javascript·css·html
lilu88888884 小时前
AI代码生成器赋能房地产:ScriptEcho如何革新VR/AR房产浏览体验
前端·人工智能·ar·vr
LCG元4 小时前
Vue.js组件开发-实现对视频预览
前端·vue.js·音视频
傻小胖4 小时前
shallowRef和shallowReactive的用法以及使用场景和ref和reactive的区别
javascript·vue.js·ecmascript
阿芯爱编程4 小时前
vue3 react区别
前端·react.js·前端框架
烛.照1034 小时前
Nginx部署的前端项目刷新404问题
运维·前端·nginx
YoloMari4 小时前
组件中的emit
前端·javascript·vue.js·微信小程序·uni-app
CaptainDrake4 小时前
力扣 Hot 100 题解 (js版)更新ing
javascript·算法·leetcode
浪浪山小白兔5 小时前
HTML5 Web Worker 的使用与实践
前端·html·html5
疯狂小料5 小时前
React 路由导航与传参详解
前端·react.js·前端框架