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