이 글은 Window.scrollY - Web API | MDN의 내용을 참고하여 작성하였습니다.
스크롤 정보를 가져오는 방법
웹브라우저에서 현재 화면의 스크롤 정보를 알아야 할 경우가 있는데, 보통 아래의 방법을 많이 사용합니다.
// 화면의 Y축의 상단값
window.scrollY
// 화면의 Y축의 하단값
window.scrollY + window.innerHeight
브라우저 호환성
window.scrollY
의 브라우저 호환성을 확인해보면 Internet Explorer(이하 IE)를 제외하고 모두 지원하며, 일부 모바일 환경에서 ?(알 수 없음)로 표시되어있습니다.
그리고 window.scrollY
와 window.pageYOffset
은 같은 속성이지만, 오래된 브라우저의 경우 window.scrollY
대신 window.pageYOffset
만 지원할 수도 있으니 window.pageYOffset
사용을 권장하고 있습니다.
window.pageYOffset === window.scrollY; // 항상 true
브라우저 호환성을 위해 수정한 코드
예전에 window.scrollY
를 사용했다가 IE 브라우저에서 스크롤을 해도 이벤트가 실행되지 않는다는 버그리포트가 들어온적이 있는데, window.pageYOffset
으로 수정하여 해결하였습니다. 평화를 위해 window.pageYOffset
속성을 사용합시다. 😊
// 화면의 Y축의 상단값
window.pageYOffset
// 화면의 Y축의 하단값
window.pageYOffset + window.innerHeight
IE9 미만을 위한 코드
IE9 미만에서는 두 속성 모두 지원하지 않으므로 또 다른 비표준 속성을 사용해야 합니다.
요즘은 IE10 미만을 가지고 있기도 힘들기 때문에 보통 지원 브라우저에서 제외되지만, 지원해야할 수도 있으니... 알아두는게 좋을 것 같습니다.
var supportPageOffset = window.pageXOffset !== undefined;
var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat");
var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;
var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;
참고사이트
'DEV > Note' 카테고리의 다른 글
JavaScript 이벤트 처리 (0) | 2020.04.06 |
---|---|
console.log 한방에 지우기 (0) | 2019.12.31 |
NodeJs에서 메모리가 부족할 때 (0) | 2019.11.20 |