Web浏览器的事件类型(交互基础)——鼠标和滚轮事件(叁)

508 阅读2分钟

这是我参与更文挑战的第28天,活动详情查看:更文挑战

6.鼠标按键

只有在元素上单机鼠标键(或按下键盘上的回车键)时 click 事件才会触发。对 mousedownmouseup 来说, event 对象上会有一个 button 属性,用来表示释放的是哪个按键。 DOM 为这个 button 属性定义了 3 个值:

  • 0: 表示鼠标主键(通常为鼠标左键)
  • 1: 表示鼠标中间(滚轮按键)
  • 2: 表示鼠标副键(通常为鼠标右键)

IE8以及之前的版本会和上述的按键信息完全不同。如果要使用这个属性,要记得兼容。

7.额外事件信息

DOM2 Events 规范在 event 对象上提供了 detail 属性,以给出关于事件的更多信息。对鼠标时间来说,这个 detail 属性记录了在给定位置上发生了多少次单击事件。 detail 的值从 1 开始,每次单击都会加 1 。如果鼠标在 mousedownmouseup 之间移动了,则 detail 会重置为 0

IE 还为鼠标事件提供额外的一些信息,因为不是很常用,所以不展开了。

8.mousewheel事件

IE6 首次实现 mousewheel 事件。之后其余浏览器也跟随其后实现。这个事件会在任何元素上触发,并冒泡到 window 。mousewheel 事件的 event 对象包含鼠标事件的所有标准信息,此外还有一个名为 wheelDelta 的新属性。当鼠标滚轮向前滚动时, wheelDelta 每次都是 +120 ;而当鼠标滚轮向后滚动时, wheelDelta 每次都是 –120

可以使用以下代码进行滚轮事件的交互:

document.addEventListener("mousewheel", (e) => {
 console.log(e.wheelDelta);
});

9.触摸屏设备

触摸屏通常不支持鼠标操作。在为触摸屏设备开发时,要记住以下事项。

  • 不支持 dblclick 事件。
  • 单指点触屏幕上的可点击元素会触发 mousemove 事件。如果操作会导致页面内容变化,则终止其他事件的触发。如果没有变化,则会相继触发 mousedownmouseupclick 事件。
  • mousemove 事件也会触发 mouseovermouseout 事件。
  • 双指点触屏幕并滑动导致页面滚动时会触发 mousewheelscroll 事件。

10.无障碍问题

如果网站需要考虑残障人士,那我们最好只是使用 click 鼠标事件。关于这个问题,给出了以下几条建议:

  • 不要用 mousedown 替代 click 事件,因为屏幕阅读器无法触发 mousedown 事件。
  • 不要用 mouseover 向用户显示新选项,这个在屏幕阅读器上同样无法触发。
  • 不要用 dblclick 执行重要操作,因为键盘无法触发这个操作。

引用

[1] JavaScript高级程序设计(第4版)