我有一个页面,其中包含单击时调用 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)设置恢复滚动位置的延迟。