문제
ios에서 스크롤의 맨 위나 아래에서 각각 스크롤업이나 다운시 스크롤이 freezing 되는 현상
해결 방법
이벤트끼리 충돌나서 생기는 문제라 그냥 touchstart, touchmove에 대한 listener 몇 개 추가하고 에러가 생기는 케이스들에 event.preventDefault() 하여 이벤트를 막았음
var lastY = 0;
var targetElt = document.querySelector(".scroller");
targetElt.addEventListener('touchstart', function(event) {
lastY = event.touches[0].clientY;
});
targetElt.addEventListener('touchmove', function(event) {
var top = event.touches[0].clientY;
var scrollTop = event.currentTarget.scrollTop;
var maxScrollTop = event.currentTarget.scrollHeight -
$(event.currentTarget).outerHeight();
var direction = lastY - top < 0 ? 'up' : 'down';
if (
event.cancelable && (
(scrollTop <= 0 && direction === 'up') ||
(scrollTop >= maxScrollTop && direction === 'down')
)
)
event.preventDefault();
lastY = top;
});
정리
위로 스크롤하는데 scrollTop이 0보다 작거나, 아래로 스크롤하는데 스크롤이 최대 스크롤보다 클 때
preventDefault()로 이벤트 막기
Div scrolling freezes sometimes if I use -webkit-overflow-scrolling
if I use -webkit-overflow-scrolling for a scrolling div, it scrolls perfectly with native momentum. But, div itself sometimes freezes and does not respond my finger moves. After 2-3 seconds later, it
stackoverflow.com
다른 방법으로는 그냥 앱 개발자분이 ios 바운스 없애주니까 해결됨 -.- (이게 베스트같음)
'🧠 저장 > Javascript' 카테고리의 다른 글
순수 자바스크립트 ajax 간단 정리 ( feat. XMLHttpRequest ) (0) | 2024.01.29 |
---|---|
디바운스(debounce)와 쓰로틀링(throttle) (0) | 2024.01.18 |
Promise.allSettled 초간단 사용법 + Promiss.all 차이점 (0) | 2023.11.02 |
function을 변수에 넣는 이유 (0) | 2023.11.01 |
에러와 에러 객체 (0) | 2023.05.31 |