8

我以为当您单击刷新时,浏览器应该将您的页面重置为顶部?我正在使用js手风琴,当我刷新时,它会关闭手风琴,但不会将页面重新定位到顶部。

http://imip.rvadv.com/index3.html

4

4 回答 4

12

好吧,正如你所看到的,它没有:)

但是你可以用一些简单的 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 毫秒,因此用户不会注意到任何内容。

如果有人能对此有所了解,我会很高兴 - 为什么滚动只适用于动画?

于 2012-07-14T19:01:43.613 回答
11

如果上述方法均无效,请尝试此操作。这将诱使浏览器认为它在刷新之前位于文档的顶部。

$(window).on('beforeunload', function() {
   $(window).scrollTop(0);
});
于 2015-03-16T05:17:35.287 回答
6

为了方便起见,浏览器将向下滚动到重新加载之前的位置。它只对过长的页面非常有用。

您可以像这样“修复”它:

window.onload = function() {document.body.scrollTop = document.documentElement.scrollTop = 0;};
于 2012-07-14T19:01:42.327 回答
3

根据comonpyke的最后评论和我推荐的自己的测试

$(document).ready(function(){
    $('html, body').scrollTop(0);

    $(window).on('load', function() {
    setTimeout(function(){
        $('html, body').scrollTop(0);
    }, 0);
 });
});
  • 第一个 scrollTop 提前滚动
    • 文件准备好后
  • 第二个 scrollTop 滚动延迟
    • 加载事件后
      • 超时后
于 2015-03-12T09:22:29.180 回答