popstate 이벤트가 발생할 때 문서를 스크롤하는 기본 동작을 방지 할 수 있습니까?
우리 사이트는 jQuery 애니메이션 스크롤링과 History.js를 사용하며 상태 변경은 사용자를 pushstate 또는 popstate를 통해 페이지의 다른 영역으로 스크롤해야합니다. 문제는 popstate 이벤트가 발생하면 브라우저가 이전 상태의 스크롤 위치를 자동으로 복원한다는 것입니다.
문서의 너비와 높이를 100 %로 설정 한 컨테이너 요소를 사용하고 해당 컨테이너 내부의 콘텐츠를 스크롤 해 보았습니다. 제가 발견 한 문제는 문서를 스크롤하는 것만 큼 매끄럽지 않은 것 같습니다. 특히 상자 그림자 및 그라디언트와 같은 많은 css3를 사용하는 경우.
또한 사용자가 스크롤을 시작하는 동안 문서의 스크롤 위치를 저장하고 브라우저가 페이지를 스크롤 한 후 (popstate에서) 복원 해 보았습니다. 이것은 Firefox 12에서 잘 작동하지만 Chrome 19에서는 페이지 스크롤 및 복원으로 인해 깜박임이 있습니다. 나는 이것이 스크롤과 스크롤 이벤트가 시작되는 (스크롤 위치가 복원되는) 사이의 지연과 관련이 있다고 가정합니다.
Firefox는 popstate가 실행되기 전에 페이지를 스크롤하고 스크롤 이벤트를 실행하고 Chrome은 먼저 popstate를 실행 한 다음 문서를 스크롤합니다.
기록 API를 사용하는 모든 사이트는 위와 유사한 솔루션을 사용하거나 사용자가 뒤로 / 앞으로 이동할 때 스크롤 위치 변경을 무시합니다 (예 : GitHub).
popstate 이벤트에서 문서가 전혀 스크롤되지 않도록 할 수 있습니까?
document.body.clientHeight
모든 브라우저에서 작동하는 것을 보지 못했습니다.