Candle
 


브라우저 문서 영역 크기 구하기

브라우저의 문서 영역의 크기를 구할때
현재 보여지는 부분의 크기(clientWidth, clientHeight)와
실제 존재하는 부분의 크기(scrollWidth, scrollHeight)를 사용하게 되는데,

이게, 브라우저마다 또 표준 DTD 인지 여부에 따라 구하는 방법이 모두 상이하다.
그래서 간단한 함수로 만들어봤다.

IE5, IE55, IE6, IE7, IE8, FF2, Safari3, Opera9 에서 테스트 됨 (Language : javascript)
  1. /**
  2. * 브라우저 document 영역의
  3. * clientWidth/clientHeight, scrollWidth/scrollHeight 구하기
  4. *
  5. * @author hooriza
  6. */
  7. function getClientSize() {
  8.   var oDoc = document[document.compatMode == 'CSS1Compat' ? 'documentElement' : 'body'];
  9.   if (/Opera/.test(navigator.userAgent)) oDoc = document.body;
  10.   return [
  11.     oDoc.clientWidth,
  12.     oDoc.clientHeight
  13.   ];
  14. }
  15.  
  16. function getScrollSize() {
  17.   var oDoc = document[document.compatMode == 'CSS1Compat' ? 'documentElement' : 'body'];
  18.   if (/Opera|Safari/.test(navigator.userAgent)) oDoc = document.body;
  19.  
  20.   // IE6 미만이면
  21.   if (/MSIE\s([0-9]+(\.[0-9]+)*)/.test(navigator.userAgent) && parseFloat(RegExp.$1) < 6) {
  22.    
  23.     var aOld = [ oDoc.scrollLeft, oDoc.scrollTop ];
  24.     var aClient = getClientSize();
  25.    
  26.     oDoc.scrollLeft = 999999;
  27.     oDoc.scrollTop = 999999;
  28.    
  29.     var aRet = [
  30.       oDoc.scrollLeft + aClient[0],
  31.       oDoc.scrollTop + aClient[1]
  32.     ];
  33.    
  34.     oDoc.scrollLeft = aOld[0];
  35.     oDoc.scrollTop = aOld[1];
  36.    
  37.     return aRet;
  38.    
  39.   }
  40.   return [
  41.     oDoc.scrollWidth,
  42.     oDoc.scrollHeight
  43.   ];
  44. }

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 쭈니

, , ,
Response
No Trackback , No Comment
RSS :
http://css.isfreeweb.com/tc/rss/response/3

Trackback URL : http://css.isfreeweb.com/tc/trackback/3

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

블로그 이미지

쭈니의 개인블로그입니다. 웹표준,접근성,퍼블리싱 그리고, 니콘D80 이야기로 꾸려나갈 생각입니다.

- 쭈니

Archives

Authors

  1. 쭈니

Recent Comments

Recent Trackbacks

Calendar

«   2008/08   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Site Stats

Total hits:
243
Today:
2
Yesterday:
6