7

在 Chrome 中运行以下命令总是返回 0:

$(window).on('load', function(){
     console.log($(window).scrollTop());
});

通过控制台运行相同的命令:

$(window).scrollTop()

确实返回正确的数字。(即:843)

StackOverflow 上有很多关于这个问题的问题,但没有一个给我一个正确的工作答案或替代方案。我很茫然...

4

2 回答 2

11

scrollTop()返回滚动条的当前垂直位置。通常在页面加载时,滚动条位于 position 0。如果控制台打印出其他内容,那么您或浏览器必须在调用该函数之前向下滚动。

如果您使用命名锚点或从滚动位置刷新页面,则可以将处理程序绑定到仅触发一次的滚动事件 - 在页面加载时:

$(window).on('scroll', function() {
    console.log( $(this).scrollTop() );
});
于 2013-07-31T08:01:16.633 回答
1

获取当前滚动位置In page的方法有很多

  1. 首先获取pageYOffSet let verticalScrollOffset = window.pageYOffset;

    然后设置 window.scrollTo(0,verticalScrollOffset);

  2. 如果您需要两个侧面位置并设置然后

    let scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
    let scrollTop = window.pageYOffset || document.documentElement.scrollTop;
    
    window.scrollTo(scrollLeft,scrollTop);
    
  3. 使用ViewportScroller 单击此处了解更多 this.viewportScroller.scrollToPosition(this.viewportScroller.getScrollPosition());//对我的情况没有帮助

  4. 理想的解决方案对我有用,我只是在加载页面之前保存 verticalScrollOffset(YaxisSrollPosition) 或在任何常量变量或本地存储中刷新。然后在刷新或加载页面后使用该位置

    let verticalScrollOffset = window.pageYOffset || document.documentElement.scrollTop;
    
    $("html, body").animate({ scrollTop: verticalScrollOffset }, "slow");//slow Or fast option
    
于 2020-09-21T12:21:11.997 回答