Javascript 在滚动到div时是否有防止页面跳转(加载图像)的方法?
我在页面加载时使用以下代码平滑地滚动到divJavascript 在滚动到div时是否有防止页面跳转(加载图像)的方法?,javascript,jquery,html,Javascript,Jquery,Html,我在页面加载时使用以下代码平滑地滚动到div $(document).ready(function() { $('html,body').delay(50).animate({scrollTop:jQuery('#3342').position().top-10}, 'slow'); }); 将页面平滑地滚动到预定义的div id(在本例中为div id=3342,但实际的div id会根据用户单击的按钮而变化)效果非常好 问题是,如果div 3342上方的页面中有任何
$(document).ready(function() {
$('html,body').delay(50).animate({scrollTop:jQuery('#3342').position().top-10}, 'slow');
});
将页面平滑地滚动到预定义的div id(在本例中为div id=3342
,但实际的div id会根据用户单击的按钮而变化)效果非常好
问题是,如果div 3342上方的页面中有任何图像,那么在滚动完成后,页面将跳转,整个定位滚动将无效,因为该内容不再显示在屏幕上
顺便说一句,这是在mobile safari上。我知道Google chrome最近引入了滚动定位,我相信这就是我试图以某种方式复制的功能
仅供参考,我无法提前知道图像的大小或图像大小的比例。它们是来自网络上的随机图像
谢谢
编辑:我不想更改为window/load事件,因为这意味着我必须等待所有图像首先加载,这将在某些页面上严重延迟滚动事件
编辑:图像URL都在源页面上,在完成之前,没有ajax加载页面:
$(document).ready(function() {
var div = jQuery('#3342');
var complete = false;
function adjust () {
if (!complete) {
$('html,body').delay(50).animate({scrollTop:div.position().top-10}, 'slow', adjust);
} else {
$('html,body').delay(50).animate({scrollTop:div.position().top-10}, 'slow');
}
}
adjust();
$(window).on('load', function () {
complete = true;
});
});
将“文档”更改为“窗口”。但它不会立即滚动。@Michael
$(窗口)。ready
与窗口加载事件不同。将没有不同的效果,具体取决于图像内容源是什么。是在页面源代码中,还是也加载了ajax内容?@charlietfl图像内容在页面源代码中,根本没有ajax加载图像。感谢ready
事件在加载图像之前发生。。。。窗口加载事件发生在加载它们之后,当它们存在于原始源HTMLM中时,非常简单,只需交换$(文档)。为$(窗口)准备好。在('load'
)上。其余的只是将其过度复杂化