这是我参与更文挑战的第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执行重要操作,因为键盘无法触发这个操作。