鼠标滚轮事件检测目前无法在Firefox中使用

时间:2012-06-07 22:45:13

标签: javascript jquery mousewheel

出于某种原因,我在尝试识别Firefox中的鼠标滚轮事件时遇到了麻烦。这适用于IE,Chrome,Safari,Opera,但不适用于FF。我在DOMMouseScroll上附加了一个事件监听器,应该在FF中识别。

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
    }
});

3 个答案:

答案 0 :(得分: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
    }
});

答案 1 :(得分:2)

此代码可以挽救我的生命..适用于Chrome,Firefox,Edge,Internet Explorer,Opera ......

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

答案 2 :(得分:0)

这似乎适用于Safari,Chrome和Firefox(我还没有在IE中测试过):

// For Chrome
window.addEventListener('mousewheel', mouseWheelEvent);

// For Firefox
window.addEventListener('DOMMouseScroll', mouseWheelEvent);

function mouseWheelEvent(e) {
  var delta = e.wheelDelta ? e.wheelDelta : -e.detail;
}

来自:http://www.h3xed.com/programming/javascript-mouse-scroll-wheel-events-in-firefox-and-chrome