鼠标滚轮事件总是在firefox中返回小于0(向下)? [JQuery的]

时间:2013-05-29 19:29:54

标签: javascript jquery mousewheel

我正在使用JQuery来检测鼠标滚轮是向上还是向下滚动,并且它可以在所有浏览器中运行,除了firefox,它似乎总是认为它向下滚动。任何帮助表示赞赏!

$('html,body').bind('DOMMouseScroll mousewheel', function(e){
    if (e.originalEvent.wheelDelta /120 > 0) {
        alert('scrolling up !');
    }
    else {
        alert('scrolling down !');
    }
});

JSFiddle:http://jsfiddle.net/Qvs2r/1/

2 个答案:

答案 0 :(得分:3)

在您出现条件之前添加此内容:

var theEvent = e.originalEvent.wheelDelta || e.originalEvent.detail*-1

你的条件

if ( theEvent /120 > 0)

*-1因为某种原因,firefox会反转滚动值。

答案 1 :(得分:0)

试试这个:

var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.x

if (document.attachEvent) //if IE (and Opera depending on user setting)
    document.attachEvent("on"+mousewheelevt, function(e){alert('Mouse wheel movement detected!')})
else if (document.addEventListener) //WC3 browsers
    document.addEventListener(mousewheelevt, function(e){alert('Mouse wheel movement detected!')}, false)
编辑:没关系,我只是注意到你有这个。我认为问题出在第一个IF声明中。您应该在Firebug中调试它并查看e保存的值。