1.mousewheel事件(兼容opera,chrome,safari,IE)
chrome
mousewheel事件对应的event对象包含一个wheelDelta属性。用户滚动鼠标滚轮时,wheelDelta的值是正负120
的倍数。浏览器
值得注意的是,在opera9.5以前的版本,wheelDelta的正负号是颠倒的,这里不作考虑bash
通常状况下,监听wheelDelta的正负值,就能够肯定鼠标滚轮的滚动方向。ui
document.addEventListener('mousewheel',function(event){
console.log( event.wheelDelta > 0 )
},false)
复制代码
2.DOMMouseScroll事件(兼容FireFox)
spa
FireFox支持一个名为DOMMouseScroll的相似事件,类比于mousewheel。不一样的是,鼠标滚轮的信息保存在detail属性里面。还有一点,用户滚动鼠标滚轮时,detail的值是正负3
的倍数。code
document.addEventListener('DOMMouseScroll',function(event){
console.log( event.detail > 0 )
},false)
复制代码
3.跨浏览器兼容写法
对象
var eventHandle = {
getEvent: function(event){
return event || window.event;
},
addEvent: function(element, type, handler){
if(element.addEventListener){
element.addEventListener(type, handler, false);
}
else if(element.attachEvent){
element.attachEvent('on'+type, handler);
}else{
element['on'+type] = handler;
}
},
getWheelDelta: function(event){
return event.wheelDelta ? event.wheelDelta : (-event.detail)*40;
}
}
function mouseHandle(event){
event = eventHandle.getEvent(event);
var delta = eventHandle.getWheelDelta(event);
console.log( delta )
}
eventHandle.addEvent(document, 'mousewheel', mouseHandle);
eventHandle.addEvent(document, 'DOMMouseScroll', mouseHandle);
复制代码