Javasciprt

[Javascript] Auto Scroll을 중단

씬프 2025. 2. 4. 10:46
반응형

스크롤이 자동으로 진행되는 도중에 유저가 개입할 경우 Scroll 이벤트를 종료시켜야 하는 기능이 필요했다.

 

유저의 개입에 대한 판단을 이렇게 접근했다.

- 스크롤 이벤트가 발생한다.

- 유저가 개입할 경우 scroll height와 client height + scroll top을 비교해서 scroll height가 더 클 경우 유저가 개입한 것으로 판단한다.

 

유저의 개입 여부를 판단하는 로직을 스크롤 이벤트 내에서 처리하다보니 자동 스크롤도 스크롤 이벤트, 유저의 개입도 스크롤 이벤트로 처리되어 간헐적으로 유저의 개입에도 자동 스크롤 상태가 유지되는 경우가 있었다.

 

유저가 개입 상황을 판단하는 방식을 다르게 생각했다.

- 모바일 환경이라면 유저가 터치를 통해 개입할 수 있다.

- PC 환경이라면 MouseEvent, 혹은 Wheel 이벤트로 개입할 수 있다.

 

(다른 방식이 더 있을지 모르겠지만,)

현재로썬 해당 이벤트를 유저 개입으로 판단해 자동 스크롤 상태를 변경했을 때, 이전과 같은 버그를 방지할 수 있었다.

 

어떤 다른 방식이 또 있을지...