Javascript 如何在页面onload事件之后获得页面的滚动顶部?

Javascript 如何在页面onload事件之后获得页面的滚动顶部?,javascript,dom-events,onload,scrolltop,onscroll,Javascript,Dom Events,Onload,Scrolltop,Onscroll,我知道如何获取页面的scrollTop,我使用了这个简单的JS函数(代码复制): 这是可行的,我的问题如下:我试图将其添加到PageOnLoad事件中 <body onload="alert(GetScrolledTop());"> 在页面加载时,我得到零(这是有意义的),但问题是,即使我滚动页面,然后在不触摸滚动条的情况下重新加载页面,我也会得到零。 浏览器似乎有以下功能: 加载页面 调用我的GetScrolledTop()(显然显示为零) 然后将页面滚动到以前的位置 您知道

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

这是可行的,我的问题如下:我试图将其添加到PageOnLoad事件中

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

在页面加载时,我得到零(这是有意义的),但问题是,即使我滚动页面,然后在不触摸滚动条的情况下重新加载页面,我也会得到零。

浏览器似乎有以下功能:

  • 加载页面
  • 调用我的
    GetScrolledTop()
    (显然显示为零)
  • 然后将页面滚动到以前的位置
  • 您知道在步骤3之后如何获取
    scolledTop
    ? 我的意思是,在浏览器滚动页面后,如何获取
    滚动页面
    
    (可能不使用计时器)

    可能不使用计时器。但是,您可能可以使用延迟为0毫秒的计时器,当线程空闲时,该计时器将执行该函数,同时看起来仍然是即时的:

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

    编辑-我认为还值得一提的是,它支持在窗口滚动后触发的事件。

    从用户界面/体验的角度来看,接管浏览器的本机功能不是一个好主意。浏览器的本机功能通过滚动回到页面顶部来帮助导航。@bgy:没有提到接管功能,只是获取当前滚动位置。+1 window.setTimeout技巧在除IE7和IE8之外的所有浏览器中都有效(没有尝试IE6)。使用onscroll事件在任何地方都有效。
    <body onload="window.setTimeout(function () { alert(GetScrolledTop()); } , 0);">