- 非Firefox:mousewheel, 可通过event.wheelDelta获取滚动信息,正数:向上滚动,负数:向下滚动,滚动一次值为正负120
- Firefox:DOMMouseScroll,可通过event.detail获取滚动信息,与别的浏览器相反,正数:向下滚动,负数:向上滚动;滚动一次值为正负3
可以通过 window.navigator.userAgent 来判断当前设备及浏览器版本号
/firefox/i.test(window.navigator.userAgent) ? 'Firefox' : '非Firefox'
判断event.wheelDelta是否有值?有则非Firefox,无则相反~
const mousewheelHandler = (e: WheelEvent | any /* TODO: wheelDelta is deprecated */) => {
const delta = e.wheelDelta ? e.wheelDelta : -e.detail // 考虑Firefox
if (delta > 0) { // 向上
xxx
} else { // 向下
xxx
}
}
需要注意的是,由于滚动事件的特殊性,触发时并不知道你是想正常的滚动页面还是进行特定操作,需要阻止默认事件
详情参考: