2012-06-07 49 views
3

由于某种原因,我在尝试识别Firefox中的mousewheel事件时遇到了问题。这是在IE,Chrome,Safari,Opera,但不是FF。我在DOMMouseScroll上附加了一个应该在FF中识别的事件监听器。鼠标滚轮事件检测目前未在Firefox中工作

Fiddle demo

$(document).unbind('mousewheel DOMMouseScroll').on('mousewheel DOMMouseScroll', function(e) { 
    var evt = event || e || window.event; 
    var delta = evt.detail < 0 || evt.wheelDelta > 0 ? 1 : -1; 

    if (delta < 0) { 
     // scroll down 
    } else { 
     // scroll up 
    } 
}); 

回答

14

您的代码在控制台中产生错误。该行:

var evt = event || e || window.event; 

不正确;范围内没有“事件”变量。你可以直接使用“e”。 jQuery代码将确保您的处理程序获取事件参数作为参数。或者:

$(document).unbind('mousewheel DOMMouseScroll').on('mousewheel DOMMouseScroll', function(evt) { 
    var delta = evt.detail < 0 || evt.wheelDelta > 0 ? 1 : -1; 

    if (delta < 0) { 
     // scroll down 
    } else { 
     // scroll up 
    } 
}); 
+0

啊,伙计。我正在摸索我的头一阵子。谢谢! –

+0

您是否碰巧知道为什么向上滚动不适用于此解决方案? –

+1

不是我的头顶;我会检查小提琴。 – Pointy

1

此代码保存了我的生活..在Chrome,Firefox,Edge,Internet Explorer,Opera ...中工作...

window.addEventListener('wheel', function(event){ 
if(event.deltaY < 0){ 
// wheeled up 
} 
else { 
// wheeled down 
} 
});