在页面加载/刷新时使用scrollTop()获取Chrome中的当前滚动位置

时间:2013-07-31 07:47:12

标签: jquery google-chrome scrolltop

在Chrome中运行以下内容始终返回0:

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

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

$(window).scrollTop()

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

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

2 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:0)

有很多方法可以获取页面中当前的滚动位置

  1. 首先获取页面YOffSet 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 click here to know more 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