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

bob*_*obb 3 javascript jquery mousewheel

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

小提琴演示

$(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
    }
});
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 14

您的代码在控制台中生成错误.这条线:

var evt = event || e || window.event;
Run Code Online (Sandbox Code Playgroud)

是不正确的; 范围内没有"事件"变量.你可以直接使用"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
    }
});
Run Code Online (Sandbox Code Playgroud)

  • jQuery 1.9.1:`var delta = event.originalEvent.detail <0 || event.originalEvent.wheelDelta> 0?1:-1;` (7认同)
  • 这是因为jQuery事件对象包装器上没有"detail"属性 - 你必须查看`evt.originalEvent.detail`才能看到它:http://jsfiddle.net/yDdXs/ (2认同)