7

Chrome で次を実行すると、常に 0 が返されます。

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

コンソールから同じコマンドを実行します。

$(window).scrollTop()

正しい数値を返します。(例: 843)

ここStackOverflowでこの問題について多くの質問がありますが、どれも正しい実用的な答えや代替案を私に与えていません. 私は途方に暮れています...

4

2 に答える 2

1

ページ内の現在のスクロール位置を取得するには多くの方法があります

  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 に答える