2

私はページの取得方法を知って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. 次に、ページを前の場所にスクロールします。

scolledTopステップ3の後に取得する方法を知っていますか?scrolledTop ブラウザがページをスクロールした後に取得する方法を意味しますか? (たぶんタイマーを使わずに)

4

1 に答える 1

2

おそらくタイマーを使わずにはいられないでしょう。ただし、遅延が0msのタイマーを使用できる場合があります。これにより、スレッドがアイドル状態になったときに関数が実行されますが、それでも瞬時に表示されます。

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

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

于 2010-03-29T18:29:38.643 に答える