2010-03-29 23 views
2

我知道如何讓一個頁面的scrollTop的,我用這個簡單的JS函數(代碼複製左右):如何在page onload事件之後獲得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; 
} 

這工作,我的問題是這樣的:我試着將它添加在頁面的onload事件

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

在頁面加載我得到ZERO(其意義),但問題是,我得到ZERO 即使我滾動頁面,然後重新裝入而不觸及滾動條。

這似乎是瀏覽器:

  1. 加載頁面
  2. 叫我GetScrolledTop()(所以很明顯顯示ZERO)
  3. 然後滾動頁面到它原來所在之處。

你知道如何在步驟3後得到scolledTop嗎? 我的意思是如何讓滾動的頂部在瀏覽器滾動頁面之後? (也許沒有使用定時器)

謝謝!

+0

從用戶界面/經驗的角度來看,接管瀏覽器的本機功能並不是一個好主意,通過滾動回頁面的頂部來幫助導航。 – 2010-03-29 18:46:59

+0

@bgy:沒有提及接管功能,只獲取當前的滾動位置。 – 2010-03-29 19:23:47

回答

2

可能不是沒有使用計時器。但是,你可能能夠使用一個計時器一個0毫秒的延遲,當線程變爲空閒其將執行的功能,同時還出現是瞬間:

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

編輯 - 想這可能也是值得一提的即most browsers支持onscroll事件,該事件應在窗口滾動後觸發。

+1

+1 window.setTimeout技巧適用於除IE7和IE8以外的所有瀏覽器(未嘗試IE6)。使用onscroll事件無處不在。 – 2010-09-02 19:14:09