Как отключить эффект множественной прокрутки в OSX и Fire Scroll Event один раз за прокрутку

Мне нужно организовать навигацию как jquery.fullPage: когда я прокручиваю один раз - я перехожу к следующему разделу.

Я попытался использовать jquery.mousewheel для него, но он не работает в MacOS с сенсорной панелью или трекпадом или APPLE Magic Mouse: он прокручивает несколько слайдов за одну прокрутку.

Я пытался использовать это решение: https://github.com/jquery/jquery-mousewheel/issues/36

Он отлично работает в Chrome, но не в FF и имеет ошибки в Safari.

Это простая демонстрация проблемы: http://jsfiddle.net/ss5LueLx/13/

$slider.on('mousewheel', function(event) {
    if (event.deltaY>0) {
        slider.prevSlide();
    } else {
        slider.nextSlide();
    }
});

1 ответ

Я проверил это утверждение в моем браузере SeaMonkey, и оно не удалось.

var delta  = e.type == 'mousewheel' ? e.originalEvent.wheelDelta * -1 : 40 * e.originalEvent.detail;

На всякий случай я посмотрел на deltaY, и он работает: +1 в одном направлении и -1 в другом, как вы определили в двух других ваших реализациях.

console.log(e.deltaY); // view console in FireBug

Глядя на структуру событий в Firebug, я вижу, что типом события является "колесико мыши", и все же я не вижу поля wheelData в originalEvent.

И хотя есть поле подробностей, но это остается на нуле.

Я полагаю, что вы пытаетесь перейти к следующему пункту, только когда достигнете +/-3. Я бы предложил что-то в этом роде, чтобы совершить этот подвиг:

// somewhere, initialize to zero
var current_position = 0;


// on mousewheel events
current_position += e.deltaY;

// you had a x 40 which would indicate that the limit is about 120 / 40
// if 3 is too small, you can always increase it to 5 or event 10...
if(current_position <= -3)
{
  slider.nextSlide();
  current_position = 0;
}
else if(current_position >= 3)
{
  slider.prevSlide();
  current_position = 0;
}

В противном случае вы можете проверить, что ваш allowScroll флаг работает как положено. Я не программирую объекты таким образом, поэтому я не уверен, правильно это или нет. (Я использую prototype синтаксис, который полезен, если вы хотите расширить классы.)

Другие вопросы по тегам