ページオンロードイベントの直後にページのscrollTopを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2540279

質問

ページの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() を呼び出します (したがって、明らかに ZERO が表示されます)
  3. 次に、ページを前の位置までスクロールします。

ステップ3の後にscolledTopを取得する方法を知っていますか?つまり、scrolledTopを取得する方法です ブラウザがページをスクロールした後?(タイマーを使わなくても良いかもしれません)

ありがとう!

役に立ちましたか?

解決

おそらくタイマーを使用しないと無理でしょう。ただし、遅延が 0ms のタイマーを使用すると、スレッドがアイドル状態になったときに関数を実行しながら、インスタントに見えることもあります。

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

編集 - それも言及する価値があるかもしれないと思いました ほとんどのブラウザ をサポートする onscroll このイベントは、ウィンドウがスクロールした後に発生します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top