로그인

이메일
비밀번호
왼쪽에 걸리적 거리는 거 숨기기

IE 에서의 scrollLeft/scrollTop 문제

모르면 이유를 찾기가 까다로운 문제이다.

IE6 이상에서는 웹페이지에 DTD 가 명시되었을때 document 객체의 scrollLeft 와 scrollTop 가 올바른 값을 뱉어내지 않는 버그(?)가 있다.

너무나 어처구니 없고 개연성이 없어보이는 버그이기 때문에 이에 대한 정보를 미리 알지 못했다면 DTD 때문에 해당 문제가 생기는 거라고는 추리하기는 불가능하다-_-;

아무튼 해결 방법은 다음과 같다.
document 객체에서 scrollLeft 와 scrollTop 을 뽑아내지 말고
document.documentElement 객체에서 scrollLeft 와 scrollTop 을 뽑아내자.

뭐 이런식으로 함수 하나 만들어서 사용하면 되겠다.

function getScrollPos() {
    var doc = document.documentElement || document;
    return { left : doc.scrollLeft, top : doc.scrollTop };
}

DTD 지정했을때 윈도우 크기 얻어내기

브라우저 자체의 크기가 아니라 HTML 내용이 표시되는 영역의 크기를 얻어내는 방법이다.
이 방법을 찾기 전에는 임의의 엘리먼트(이를테면 div 태그) 하나를 width:100%; height:100% 로 해서 clientWidth 와 clientHeight 을 얻어낸 다음에 다시 크기를 되돌려 놓는 뻘짓거리로 얻어냈었다-_-

방법은 초 간단.
document.documentElement 의 clientWidth 와 clientHeight 로 얻어낼 수 있다.

끝.
영양가 있는 포스팅인가요
(총 2분이 투표해서 3.0점) 3.0점
2007/01/15 22:43 2007/01/15 22:43

Trackback Address :: http://hooriza.com/trackback/973

  1. 김정윤 2007/01/16 09:49 댓글주소 | 수정 | 삭제 | 댓글

    브라보~
    말그대로 초간단이네요....저도 비슷한 뻘짓을 했었는데 팁 감사해요~

[로그인][오픈아이디란?]