如何在页面onload事件之后获取scrollTop页面?

时间:2010-03-29 18:24:06

标签: javascript javascript-events onload scrolltop onscroll

我知道如何获取页面的scrollTop,我使用这个简单的JS函数(代码复制):

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. 然后将页面滚动到之前的位置。
  4. 你知道如何在第3步之后获得scolledTop吗? 我的意思是如何在浏览器滚动页面后获得scrolledTop (也许不使用计时器)

    谢谢!

1 个答案:

答案 0 :(得分:2)

可能没有使用计时器。但是你可以使用延迟为0ms的定时器,当线程空闲时执行该功能,同时看起来仍然是即时的:

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

编辑 - 认为值得一提的是most browsers支持onscroll事件,该事件应在窗口滚动后触发。