10

我正在处理这个页面http://dindita.com/preview.html

当有人刷新页面但似乎不起作用时,我添加了它以使其滚动到顶部,我想知道它是否与我正在使用的其他滚动脚本冲突。

<script type="text/javascript">
    $(document).ready(function(){
    $(this).scrollTop(0);
});
</script>

有什么线索吗?

ps:工作中:乱七八糟的脚本

4

5 回答 5

36

尝试这个:

$(document).ready(function() {
  $("html,body").animate({scrollTop: 0}, 100); //100ms for example
});

或这个:

window.onload = function() {
 setTimeout (function () {
  scrollTo(0,0);
 }, 100); //100ms for example
}

或这个:

$(window).on('beforeunload', function() {
    $(window).scrollTop(0); 
});

浏览器在重新加载时往往会跳回到上次滚动的位置,这在许多情况下是有意义的。似乎在 onload 事件之后立即触发了这种自动跳转(但我们不知道发生这种情况的确切时间),因此使用一些延迟或让浏览器在页面重新加载之前滚动到顶部是有意义的;)

于 2014-02-13T21:07:32.017 回答
6

浏览器(至少 Chrome)在页面加载后更改滚动位置,而不是在 DOM 准备好时。

$(window).load(function(){
    $('html, body').scrollTop(0);
});

如果这不起作用(在浏览器更改滚动位置之前仍然执行脚本),您可以设置超时:

$(window).load(function(){
    setTimeout(function() {
        $('html, body').scrollTop(0);
    }, 10);
});
于 2013-09-27T18:59:38.560 回答
3

当我尝试这个时,我有那个尤里卡时刻,它奏效了:

<script> location.hash = (location.hash) ? location.hash : " "; </script>

<head>你的 html 中。不确定单页应用程序!但在普通页面中,它确实像魅力一样。

于 2016-01-26T22:44:42.023 回答
0

这就是我想滚动到顶部的方法,但仅当文档尚未位于顶部时,并且延迟到足以不导致其正常触发的问题:

$(window).load(function() {
    setTimeout(function() {
        if ($(document).scrollTop() !== 0) $("html, body").animate({ scrollTop: 0 }, 'fast');
}, 300);
});
于 2014-06-19T04:18:14.240 回答
0

在 10 毫秒内使用计时器调用 scrollTo 并再次调用 scrollTo 并将值更改为 1 px 完成了这项工作。为每次强制刷新处理 chrome 和 safari。

w = 200;

scrollTo(w - 1, 0);
window.setTimeout (function (){scrollTo(w, 0);}, 10);
于 2014-08-19T08:23:38.780 回答