2010-03-29 12 views
2

나는, 내가이 간단한 JS 기능 (코드 주위에 복사)를 사용하여 페이지의 scrollTop을 얻는 방법을 알고페이지 올리기 이벤트 직후에 페이지의 scrollTop을 얻는 방법?

function GetScrolledTop() 
{ 
    //I never work in IE quirkmode, I always use DOCTYPE as 1st line, so I don't need to test for document.body.scrollTop 
    return self['pageYOffset'] || document.documentElement.scrollTop; 
} 

이 작동하고 내 문제는 다음입니다 : 내가 페이지 온로드에 추가하려 페이지로드 이벤트

<body onload="alert(GetScrolledTop());"> 

나는 ZERO를 (이해하는) 얻을 수 있지만, 문제는 그 페이지를 스크롤하고 스크롤 막대를 건드리지 않고 다시로드해도 내가 ZERO 를 얻을 수 있다는 것입니다. 브라우저가하는 것처럼

그것은 것 같다

  1. 로드 페이지
  2. 내 GetScrolledTop()가 (이 그렇게 분명히 ZERO를 보여줍니다)
  3. 후 예전 위치로 페이지를 스크롤 호출합니다.

3 단계 후에 scolledTop을 얻는 방법을 알고 있습니까? 브라우저를 스크롤 한 후 위로 스크롤하는 방법을 의미합니다. ? (아마 타이머를 사용하지 않고)

감사합니다!

+0

사용자 인터페이스/경험의 관점에서 볼 때, 페이지 상단으로 스크롤하여 탐색에 도움이되는 브라우저의 기본 기능을 대신 수행하는 것은 실제로 바람직하지 않습니다. –

+0

@bgy : 현재 스크롤 위치 만 가져 오는 기능에 대한 언급이 없었습니다. –

답변

2

아마 타이머를 사용하지 않고. 그러나 당신은 여전히 ​​인스턴트로 나타나는 동안 스레드가 유휴 상태가 될 때, 함수를 실행 것이다하는 에선 0ms 지연 타이머를 사용할 수 있습니다

<body onload="window.setTimeout(function() { alert(GetScrolledTop()); } , 0);"> 

편집 - 또한 언급 할 가치가있을 수도 생각 most browsersonscroll 이벤트를 지원하며,이 이벤트는 창 스크롤 후에 발생합니다.

+1

+1 window.setTimeout 트릭은 IE7과 IE8을 제외한 모든 브라우저에서 작동합니다 (IE6을 사용하지 않았습니다). onscroll 이벤트를 사용하면 어디에서나 사용할 수 있습니다. –