Запретить навигацию по страницам при горизонтальной прокрутке - PullRequest
0 голосов
/ 31 мая 2018

Я использую трекпад Mac. Как предотвратить переход страницы назад и рядом с посещаемыми страницами по горизонтальной прокрутке?

Я пытался предотвратить события, связанные с колесом, но большую часть времени он не работает.

container.addEventListener('wheel', function(ev) {
    ev.preventDefault();
    ev.stopPropagation();
    return false;
}, {passive: false, capture: true});

даже я пытался заблокировать событие mousewheel , которое также приводит к навигации по страницам.

1 Ответ

0 голосов
/ 23 июня 2018

Это не имеет ничего общего ни с веб-страницей, ни с ее событиями, это специфическое поведение системы, и я не думаю, что его можно заблокировать на уровне javascript.

Если вы хотите отключить его - перейдите по адресу:Apple Logo > Preferences > Trackpad > More gestures и снимите флажок Swipe between pages

// РЕДАКТИРОВАТЬ

Хорошо, я немного погуглил и, похоже, ошибся - есть решение этого вопроса и в основном довольно простое:

document.body.addEventListener('mousewheel', function(e) {
  e.stopPropagation();
  var max = this.scrollWidth - this.offsetWidth; // this might change if you have dynamic content, perhaps some mutation observer will be useful here

  if (this.scrollLeft + e.deltaX < 0 || this.scrollLeft + e.deltaX > max) {
    e.preventDefault();
    this.scrollLeft = Math.max(0, Math.min(max, this.scrollLeft + e.deltaX));
  }
}, false);

Только что протестировано на OSX Chrome 67

...