Подтвердить что ты не робот

Событие mousewheel не запускается в браузере Firefox

Пожалуйста, ознакомьтесь с приведенным ниже кодом.

$(this.element).on("mousewheel", this.chartMouseWheel);

chartMouseWheel:function(e) {
        if(e.originalEvent.wheelDelta /120 > 0) {
            alert('scrolling up !');
        }
        else{
          alert('scrolling down !');
        }

        if (e.preventDefault)
        e.preventDefault();
        e.returnValue = false;
    },

это событие правильно запускается в IE, chrome и не запускается в Firefox?

4b9b3361

Ответ 2

Это 2017 год, и теперь правильный ответ:

$(window).on('wheel', function(event){

    // deltaY obviously records vertical scroll, deltaX and deltaZ exist too
    if(event.originalEvent.deltaY < 0){
        // wheeled up
    }
    else {
        // wheeled down
    }
});

Работает с текущими Firefox 51, Chrome 56, IE9 +

Примечание. Значение дельт будет зависеть от браузера и пользовательских настроек.

Ответ 4

Бадри прав, вы должны использовать "DOMMouseScroll" вместо firefox. Дополнение к этому, для delta вам нужно использовать event.originalEvent.detail вместо event.originalEvent.wheelDelta. Для down событие event.originalEvent.detail дает положительное значение, тогда как event.originalEvent.wheelDelta дает отрицательное значение и наоборот.

 $(stage.content).on('mousewheel DOMMouseScroll', zoomHelper.zoom);   

 if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
            if (event.originalEvent.detail > 0) {
                //scroll down
                delta = 0.2;
            } else {
                //scroll up
                delta = 0;
            }
        } else {
            if (event.originalEvent.wheelDelta < 0) {
                //scroll down
                delta = 0.2;
            } else {
                //scroll up
                delta = 0;
            }
        }

JSFiddle (работает в IE 11, Firefox 33 и Chrome 38, я не тестировал другие браузеры): http://jsfiddle.net/rpaul/ckwu7u86/3/

Ответ 5

Или просто используйте jquery-mousewheel плагин jQuery.

Ответ 6

Это похоже на работу в 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;
  console.log(delta);
}