3

何らかの理由で、Firefoxでマウスホイールイベントを認識しようとして問題が発生しました。これはIE、Chrome、Safari、Operaで機能しますが、FFでは機能しません。FFで認識されるはずのDOMMouseScrollにイベントリスナーをアタッチしています。

フィドルデモ

$(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 に答える