页面完全加载后自动滚动到指定div的代码故障排查
解决页面完全加载后执行滚动动画的问题
你的问题出在修改后的代码语法错误上——$(window).load()方法只接受一个回调函数作为参数,你不能把延迟时间1300作为第二个参数传进去,这直接导致了滚动逻辑完全失效。
正确的实现方式
如果你想要页面所有资源(图片、样式表等)完全加载完成后,再延迟1300ms执行滚动动画,可以这样写:
$(window).on('load', function() { // 页面加载完成后,延迟1300ms执行滚动 setTimeout(function() { $('html, body').animate({ scrollTop: $('#myDiv').offset().top }, 2800); }, 1300); });
如果你的需求是页面加载完成后立即执行滚动,不需要额外延迟,那就去掉setTimeout:
$(window).on('load', function() { $('html, body').animate({ scrollTop: $('#myDiv').offset().top }, 2800); });
补充说明
$(window).on('load', ...)会在页面所有资源(包括图片、字体等)加载完成后触发,这正是你需要的“页面完全加载”时机;而原来的$(function(){...})只是等待DOM结构加载完成,此时图片等资源可能还没加载完毕。- 如果你使用的是jQuery 3.0及以上版本,
$(window).load()已经被官方废弃,推荐使用$(window).on('load', ...)来保证兼容性。
内容的提问来源于stack exchange,提问作者macker
相关产品推荐
相关产品推荐

