2

クリックすると document.location.reload() を呼び出すボタンを含むページがあります。ページをリロードすると、$(document).scrollTop() の値が取得されます。

$(function(){
  alert("scrollTop:"+$(document).scrollTop()); //or $(window).scrollTop() or $('body').scrollTop()
})

Firefox と Opera では、scrollTop() は正しい値を返します。Chrome と IE では常に 0 を返します。

例:( http://jsbin.com/ipepon/8 ) 手順:

  1. アラートを閉じる
  2. ページを一番下までスクロール
  3. ボタンをクリックします

Chrome に関しては、ドキュメントの読み込み後にスクロール位置の回復が発生し、 Scroll イベント ハンドラーで取得できることがわかっています。

ドキュメントをリロードするときに、scrollTop 値を正しく判断するクロスブラウザの方法はありますか?

更新 1

解決策は機能しますが、「汚い」ように見えます:

$(window).load(function(){
  setTimeout(function(){alert("scrollTop:"+$(document).scrollTop());},10);
});

( http://jsbin.com/ipepon/34を試してください) スクロール位置を回復するための遅延を設定します。

4

0 に答える 0