3

出于某种原因,我在尝试识别 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
    }
});
4

3 回答 3

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
    }
});
于 2012-06-07T23:04:43.657 回答
2

这段代码救了我的命.. 适用于 Chrome、Firefox、Edge、Internet Explorer、Opera...

window.addEventListener('wheel', function(event){
if(event.deltaY < 0){
// wheeled up
}
else {
// wheeled down
}
});
于 2017-02-13T16:06:28.707 回答
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

于 2016-02-02T23:52:20.350 回答