사용자가 처음으로 페이지를 스크롤 할 때 스크롤 이벤트 수신기를 시작한 다음 일정 시간이 지나면 실행을 중지하고 사용자가 정상적으로 스크롤 할 수있게하려고합니다. 여기첫 번째 트리거 후 스크롤 이벤트 수신기를 중지하는 방법?
내가 현재 그 작업 있어요 방법은 다음과 같습니다
var scrollcount = 0
// Scroll event listener
window.addEventListener("scroll", function() {
setTimeout(function() {
scrollcount ++
if (scrollcount < 40) {
window.scrollTo(0, 0);
}
}, 1200);
});
scrollcount
변수 단위로 스크롤과 함께, 40는 내 노트북의 트랙 패드에서 하나의 스크롤에 대한 차지하는 관한 것입니다. 카운터가 40보다 작 으면 사용자가 스크롤 휠을 놓으면 페이지가 페이지 상단으로 다시 스크롤됩니다 (40 이상이면 스크롤 휠이 이동하지 않습니다).
나는 이것에 관해서 정말로 나쁜 방법임을 깨닫습니다. 그래서 누군가가 그것을 할 수있는 더 믿을만한 방법을 가지고 있는지 궁금합니다. removeEventListener 메서드를 사용하여 setTimeout이 지연을 완료하면 이벤트 리스너를 끄려 고했지만 그 대상을 윈도우로 가져올 수 없습니다. 스크롤 이벤트 수신기가 컨테이너 div 및 창, 할당 된 경우 removeEventListener 작동하는 것이라고 생각하지만 때 스크롤 이벤트 수신기 첫 번째 위치에서 작동하지 않았다.
필자는 jQuery 또는 다른 라이브러리를 피하고 싶었지만이 시점에서 안정적으로 작동하게하려면 아무 것도 사용하지 않을 것입니다.
그것은 매우 외모와 같은 [XY 문제] (http://meta.stackexchange.com/questions/66377/what-is-the- : 예를 들어, 당신은 같은 것을 할 수 있습니다 xy- 문제). 원래 문제가 무엇인지 설명해 주시겠습니까? 사용자가 처음으로 페이지를 스크롤하려고 할 때 페이지 상단으로 스크롤하려고합니까? – TeWu
예. 그래도 나는 그것이 즉시 작동하기를 원하지 않는다. 사용자의 첫 번째 스크롤이 일부 애니메이션을 트리거하고 일단 애니메이션이 끝나면 창을 페이지 상단으로 다시 이동 한 다음 사용자가 자유롭게 스크롤 할 수있게하려고합니다. 내 문제는 내가 페이지의 상단으로 점프 할 수 있다는 것입니다. 그리고'scrollcount'는 이후에 맨위로 돌아가는 것을 멈추고 사용자가 스크롤하도록합니다. 그러나이 솔루션은 내 스크린/트랙 패드에서 너무 특별합니다 태블릿/모바일/다른 컴퓨터에서 작동하지 않습니다. 제 질문은 확실하게 더 나은 해결책이 있습니까? – Evan