关于JavaScript鼠标事件的一些记录

346 阅读2分钟

「这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战

鼠标的事件也是我们平时经常会用到的,所以本节主要对常用的一些鼠标的事件做个记录。

事件类型

现在我们先来看看鼠标的一些事件类型:

事件描述
mousedown/mouseup在元素上点击/释放鼠标按钮。
mouseover/mouseout鼠标指针从一个元素上移入/移出。
mousemove鼠标在元素上的每个移动都会触发此事件。
click如果使用的是鼠标左键,则在同一个元素上的 mousedownmouseup 相继触发后,触发该事件。
dblclick在短时间内双击同一元素后触发。如今已经很少使用了。
contextmenu在鼠标右键被按下时触发。还有其他打开上下文菜单的方式,例如使用特殊的键盘按键,在这种情况下它也会被触发,因此它并不完全是鼠标事件。

事件顺序

通常一个操作会触发多个鼠标事件,例如,点击鼠标左键,在鼠标左键被按下时,会首先触发 mousedown,然后当鼠标左键被释放时,会触发 mouseupclick

这个事件的处理顺序是固定的mousedownmouseupclick

坐标

所有的鼠标事件都提供了两种形式的坐标:

  • 相对于窗口的坐标:clientXclientY

相对于文档的坐标 pageX/Y :以文档的左上角为参照物,并且同一位置的坐标不随页面的滚动而改变。

  • 相对于文档的坐标:pageXpageY

相对于窗口的坐标 clientX/Y :以当前窗口的左上角为参照物,并且同一位置的坐标会随着页面的滚动而改变。

扩展

鼠标双击的副作用处理

假如有这样一段代码:

<span ondblclick="alert('dblclick')">双击</span>

我们期望的是双击执行我们的事件,但是会发现双击执行事件的同时,它还选中了文本。

如果你不希望造成不必要的选择,那么可以这样利用我们之前介绍过的【阻止浏览器行为】的方式来解决这个问题,即防止浏览器对 mousedown 进行操作:

<span ondblclick="alert('dblclick')" onmousedown="return false">双击</span>

防止复制

如果你想禁用选择以保护页面的内容不被复制粘贴,可以使用oncopy这个事件:

<div oncopy="alert('禁止复制!');return false">
  这是一个禁止复制的示例
</div>

🎨【点赞】【关注】不迷路,更多前端干货等你解锁

往期推荐

👉 一起来看看JS的原型继承

👉 JS中的getter和setter你会用吗?

👉 深入理解ES6箭头对象

👉 JS的装饰器模式实例分析