현재 내 프로그램은 사용자가 특정 요소를 스크롤하는 것을 청취하는 지점에 있지만이 요소를 자동으로 스크롤합니다."scrollLeft"/ "scrollTop"이 스크롤 이벤트 리스너를 트리거하지 않음을 변경합니다.
scrollLeft 또는 scrollTop을 설정하여 스크롤이 수행 된 경우 스크롤 이벤트가 트리거되지 않게 할 수 있습니까? 예를 들어, 내 생각에 기본 스위치는 다음과 같습니다.
ignoreScrollEvents = true;
element.scrollLeft = x;
ignoreScrollEvents = false;
function onScroll() {
if(ignoreScrollEvents) return false;
}
이벤트가 즉시 트리거되지 않기 때문에 (oops, duhh) 효과가있는 해결책은 아닙니다. 어떤 다른 종류의 대답을 시도 할 수 있습니까? 그게 도움이된다면 jQuery도 사용하고 있습니다.
코드에서 한 가지 문제가 발생합니다. 가끔씩 scrollLeft가 이미 0 인 경우, 코드가 0으로 설정하기도합니다. 따라서 스크롤 이벤트가 발생하지 않고 다음 사용자 스크롤이 무시됩니다. (이것은 홈, 엔드 등으로 스크롤하는 경우에만 실제로 문제가됩니다.) 그러나 이것은 확실히 가까운 해결책입니다. 그리고 나는 더미 구현에서 무언가 어리석은 것을 알았습니다. 감사! – Matchu
그 점에 대해 궁금해했습니다. 그때 가장 좋은 방법은 깃발을 설정하기 전에 값을 변경하는지 확인하는 것입니다. 그렇지 않은 경우 플래그를 설정하지 마십시오.이미이 코드를 별도의 함수로 분해 할 수는 있지만 그렇게하지 않으면 그렇게하는 것이 더 쉬울 것입니다. 예를 들어 Rodrigo의 대답을 참조하십시오. – Shog9