たくさんのウィジェットがある忙しいウェブページがあります。時々ロードするのに1、2秒かかります。
ページの上部以外の場所から更新を押すと、ページがロードされたかのようscrollTop==0
に、ある時点で元の位置にスナップバックすることがわかります。
問題は、.ready()
イベントハンドラーで発生するさまざまな初期化があり、そのうちのいくつかはとに依存しscrollTop
ていることscrollLeft
です。これらの初期化は、ドキュメントが元の位置に戻る前に行われ、元の位置から無意味な結果が得られます。
これらの初期化をイベントハンドラー内でラップすること.load()
も機能していないようです。.load()
動作するのは、ハンドラー内のsetTimeoutを介して(かなり長い)遅延を追加することです。これは明らかな理由で望ましくありません。
これは、「元の位置への復帰」が標準のイベントチェーンとは独立して発生することを示唆しています。ECMA標準で指定されていないか、ブラウザの実装に依存します。
ブラウザが元の位置に戻った後にのみ発生する必要がある初期化に対処するための最良の方法は何ですか?関連するイベントはありますか?更新が発生したことを認識し、その場合にのみ遅延する方法はありますか?
私のテストはすべてChromeとFirefoxで行われました。