クリックすると 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 ) 手順:
- アラートを閉じる
- ページを一番下までスクロール
- ボタンをクリックします
Chrome に関しては、ドキュメントの読み込み後にスクロール位置の回復が発生し、 Scroll イベント ハンドラーで取得できることがわかっています。
ドキュメントをリロードするときに、scrollTop 値を正しく判断するクロスブラウザの方法はありますか?
更新 1
解決策は機能しますが、「汚い」ように見えます:
$(window).load(function(){
setTimeout(function(){alert("scrollTop:"+$(document).scrollTop());},10);
});
( http://jsbin.com/ipepon/34を試してください) スクロール位置を回復するための遅延を設定します。