zukucode
主にWEB関連の情報を技術メモとして発信しています。

UpdatePanelの非同期ポストバック時にスクロールの位置を保持する

UpdatePanelの非同期ポストバックをしたあとにスクロール位置がクリアされてしまうことがあります。

UpdatePanelのポストバックの開始と終了のイベントを設定するで紹介したように、非同期ポストバック開始のタイミングでスクロール位置の値を保持しておき、非同期ポストバック終了のタイミングで保持しておいた値で位置を復元すれば対応できます。

var scrollTop; // スクロール位置を保持しておく変数
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(function (sender, args) {
  scrollTop = document.getElementById('Div1').scrollTop;
});

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
  // スクロール位置を復元
  document.getElementById('Div1').scrollTop = scrollTop;
});

関連記事