我有一个页面,其中包含单击时调用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值?

Update 1

有效的解决方案,但它看起来“脏”:

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

(尝试http://jsbin.com/ipepon/34)设置恢复滚动位置的延迟 .