可恶的滚轮事件 - pod4g/tool GitHub Wiki
测试时间:2016-08-04
测试环境:MAC、windows7、windows10
1. onmousewheel
支持的浏览器有Chrome/Opera/Safari/Edge/IE7/8/9/10/11
用MAC触摸板也能触发此事件
用触摸板触发此事件时:
Safari的事件执行频率较低,手指在触摸板上移动一次触发一次 Chrome/Opera/Edge/IE7/8/9/10/11的事件执行频率很高,手指放开(由于弹性滚动)也会触发N次
上述浏览器在用鼠标滚轮时触发频率是一致的(都是滚轮滚一小段距离就触发一次事件,这个距离具体是多少?各个浏览器是否一致?我没有深究,从感觉上来说,距离都差不多)。
e.wheelDelta > 0 向上滚动
e.wheelDelta < 0 向下滚动
注:在Chrome/Opera/Edge/IE中,wheelDelta的值为120的倍数
在Safari中,wheelDelta的值为12的倍数
https://developer.mozilla.org/zh-CN/docs/DOM/DOM_event_reference/mousewheel
2. DOMMouseScroll
只有Firefox支持的事件。无e.wheelDelta属性。有e.detail属性
3. wheel
DOM3标准。IE9+/Firefox17+ 都支持该事件。
在标准中,垂直滚动距离为 e.deltaY
4. 简单兼容
function wheel(dom, handler){
if(!-[1,]){ // IE8-
dom.attachEvent('onmousewheel', handler);
}else{
dom.addEventListener('wheel', handler);
}
}
https://developer.mozilla.org/zh-CN/docs/Web/API/MouseWheelEvent