当您单击刷新时,浏览器应该将页面重置到顶部,但我发现这并不总是生效。我正在使用一个 js
折叠菜单,在刷新后,它会关闭折叠菜单,但不会将页面重新定位到顶部。
当您单击刷新时,浏览器应该将页面重置到顶部,但我发现这并不总是生效。我正在使用一个 js
折叠菜单,在刷新后,它会关闭折叠菜单,但不会将页面重新定位到顶部。
你可以看到,它并没有 :)
但是你可以使用一些简单的jQuery来强制它:
$(document).ready(function(){
$(this).scrollTop(0);
});
编辑:
在IE 9、FF 12和Chrome 20.0中似乎唯一有效的方法是以下内容:
$(document).ready(function(){
$('html').animate({scrollTop:0}, 1);
$('body').animate({scrollTop:0}, 1);
});
奇怪的是,当我直接滚动元素而没有应用任何动画(即 $('html').scrollTop(0)
)时,它不起作用。由于持续时间设置为1毫秒,用户将不会注意到任何变化。
如果有人能解释一下这个现象,那我会很高兴 - 为什么只有使用动画才能滚动?
setTimeout(...,0)
将其添加到事件队列中。这可能也是您的animate()函数所做的。因此,您可以使用以下代码:$(window).on('load',function() {setTimeout(function () { $('html,body').scrollTop(0) },0); });
- commonpike如果上述方法都不起作用,请尝试以下方法。这将欺骗浏览器,在刷新前认为它已经在文档的顶部。
$(window).on('beforeunload', function() {
$(window).scrollTop(0);
});
window.onload = function() {document.body.scrollTop = document.documentElement.scrollTop = 0;};
根据comonpyke的上一条评论和我的测试,我建议
$(document).ready(function(){
$('html, body').scrollTop(0);
$(window).on('load', function() {
setTimeout(function(){
$('html, body').scrollTop(0);
}, 0);
});
});