【问题标题】:How to get scrollTop of page just after page onload event?如何在页面加载事件之后获取页面的滚动顶部?
【发布时间】:2010-03-29 18:24:06
【问题描述】:

我知道如何获取页面的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());">

在页面加载时我得到零(这是有道理的),但问题是我得到零即使我滚动页面然后重新加载它而不触摸滚动条。

浏览器好像是这样的:

  1. 加载页面
  2. 打电话给我的GetScrolledTop()(显然显示为零)
  3. 然后将页面滚动到之前的位置。

你知道如何在第 3 步之后获得scolledTop 吗? 我的意思是如何在浏览器滚动页面后获得scrolledTop (也许不使用计时器)

【问题讨论】:

  • 从用户界面/体验的角度来看,通过滚动回到页面顶部来接管浏览器的本机功能以帮助导航并不是一个好主意。跨度>
  • @bgy:没有提到接管功能,只获取当前滚动位置。

标签: javascript dom-events onload scrolltop onscroll


【解决方案1】:

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

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

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

【讨论】:

  • +1 window.setTimeout 技巧适用于除 IE7 和 IE8 之外的所有浏览器(未尝试 IE6)。使用 onscroll 事件无处不在。
猜你喜欢
  • 1970-01-01
  • 2023-02-16
  • 1970-01-01
  • 2020-07-11
  • 2017-03-21
  • 2012-04-29
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
相关资源
最近更新 更多