将scrollTop设置为onLoad窗口中的较低位置后,Chrome会跳回页面顶部

时间:2018-04-27 10:18:03

标签: google-chrome onload scrolltop jquery-migrate

将我们的站点从jQuery 1.10.2升级到jQuery 3.3.1之后,我们遇到了以下问题。

我们有这个JavaScript,使页面在加载后跳转到位置500。

// Animations created synchronously will run synchronously
function createFxNow() {
    window.setTimeout( function() {
        fxNow = undefined;
    } );
    return ( fxNow = Date.now() );
}

这在Firefox中运行良好。

但是,在Chrome中,滚动到此位置后,它会向上滚动到页面顶部。当我逐步完成Chrome JavaScript调试时,向下滚动后,这个滚动备份将在jquery-3.3.1文件中的代码处发生:

$(window).on("completelyLoaded")

我如何(1)阻止Chrome向上滚动,或者(2)将我的代码附加到以后的页面循环挂钩上,如#option 1 example$d <- +(rowSums(sapply(example, `%in%`, 1:3)) > 0) #option 2 library(matrixStats) example$d <- rowMaxs(+(sapply(example, `%in%`, 1:3))) 等?

1 个答案:

答案 0 :(得分:0)

我最终通过使用两个嵌套的$(document).ready语句解决了这个问题:

$(document).ready(function () {
    $(document).ready(function () {
        $("body, html").animate({ scrollTop: 500 }, 1);
    });
});

这显然是因为准备好的回调按照它们分配的顺序被调用。当调用外部就绪回调时,所有其他脚本应该已经分配了它们的就绪回调。因此,现在分配你准备好的回调(内部回调)将导致你的回调成为最后一个回调。换句话说,它的工作原理是因为jQuery按照添加的顺序执行事件处理程序,并且在事件处理程序中添加事件处理程序的时间尽可能晚。