将我们的站点从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)))
等?
答案 0 :(得分:0)
我最终通过使用两个嵌套的$(document).ready
语句解决了这个问题:
$(document).ready(function () {
$(document).ready(function () {
$("body, html").animate({ scrollTop: 500 }, 1);
});
});
这显然是因为准备好的回调按照它们分配的顺序被调用。当调用外部就绪回调时,所有其他脚本应该已经分配了它们的就绪回调。因此,现在分配你准备好的回调(内部回调)将导致你的回调成为最后一个回调。换句话说,它的工作原理是因为jQuery按照添加的顺序执行事件处理程序,并且在事件处理程序中添加事件处理程序的时间尽可能晚。