这是我参与更文挑战的第28
天,活动详情查看:更文挑战
6.鼠标按键
只有在元素上单机鼠标键(或按下键盘上的回车键)时 click 事件才会触发。对 mousedown
和 mouseup
来说, event
对象上会有一个 button
属性,用来表示释放的是哪个按键。 DOM
为这个 button
属性定义了 3 个值:
- 0: 表示鼠标主键(通常为鼠标左键)
- 1: 表示鼠标中间(滚轮按键)
- 2: 表示鼠标副键(通常为鼠标右键)
IE8以及之前的版本会和上述的按键信息完全不同。如果要使用这个属性,要记得兼容。
7.额外事件信息
DOM2 Events
规范在 event
对象上提供了 detail
属性,以给出关于事件的更多信息。对鼠标时间来说,这个 detail
属性记录了在给定位置上发生了多少次单击事件。 detail
的值从 1
开始,每次单击都会加 1
。如果鼠标在 mousedown
和 mouseup
之间移动了,则 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
事件。如果操作会导致页面内容变化,则终止其他事件的触发。如果没有变化,则会相继触发mousedown
、mouseup
和click
事件。 mousemove
事件也会触发mouseover
和mouseout
事件。- 双指点触屏幕并滑动导致页面滚动时会触发
mousewheel
和scroll
事件。
10.无障碍问题
如果网站需要考虑残障人士,那我们最好只是使用 click
鼠标事件。关于这个问题,给出了以下几条建议:
- 不要用
mousedown
替代click
事件,因为屏幕阅读器无法触发mousedown
事件。 - 不要用
mouseover
向用户显示新选项,这个在屏幕阅读器上同样无法触发。 - 不要用
dblclick
执行重要操作,因为键盘无法触发这个操作。