Определить направление движения без прокрутки - PullRequest
0 голосов
/ 26 января 2019

Как определить направление прокрутки без прокрутки? Вот что я делаю:

function preventDefault(e) {
  e = e || window.event;
  if (e.preventDefault)
      e.preventDefault();
  e.returnValue = false;  
}

window.ontouchmove  = preventDefault;

window.addEventListener('touchmove', function(e) {
  if (e.deltaY < 0) {
    console.log('scrolling up');
    document.getElementById('status').innerHTML = 'scrolling up';
  }
  if (e.deltaY > 0) {
    console.log('scrolling down');
    document.getElementById('status').innerHTML = 'scrolling down';
  }
});
<div style='height: 2000px; border: 5px solid gray; touch-action: none;'>
	<p id='status'></p>
</div>

Что я наблюдаю, так это то, что хотя экран не прокручивается, ни один из кодов слушателя событий не выполняется. Это потому, что в событии нет свойства deltaY. Я использовал эквивалентный код на рабочем столе с событием «wheel» для определения направления прокрутки без прокрутки.

1 Ответ

0 голосов
/ 29 января 2019

Вот что я сделал:

let start = null;

window.addEventListener('touchstart', function(e) {
    start = e.changedTouches[0];
});


window.addEventListener('touchend', function(e) {
  let end = e.changedTouches[0];

  if(end.screenY - start.screenY > 0)
  {
      console.log('scrolling up');
      document.getElementById('status').innerHTML = 'scrolling up';
  }
  else if(end.screenY - start.screenY < 0)
  {
      console.log('scrolling down');
      document.getElementById('status').innerHTML = 'scrolling down';
  }
});
...