[英]Prevent page from scrolling after DOM manipulation
我有一个JavaScript函数,它在页面加载时执行,然后在设置的时间间隔内自动执行。 该函数循环显示在另一个脚本(由PHP生成)中提供的图像。 但是每当这个函数操作DOM时,页面就会滚动回包含我正在编辑的div的div的顶部。 我真的想避免这种情况!
我已经查看了stackOverflow和其他网站上的其他帖子,但它们都涉及用户的操作,通常是jQuery或Ajax以及带锚的链接。 在这种情况下,这些都不适用。
为了让您了解我的HTML:
<div id="the_rest_of_my_page">
<div id="scrolls_to_the top_of_this">
<div id="img_div">
This is where my JavaScript is doing stuff
</div>
</div>
</div>
我的JavaScript代码:
function advance_slideshow( )
{
document.getElementById( img_div ).innerHTML = '<img src="' + img_array[index] + '">';
index = (index+1) % img_array.length;
setTimeout('advance_slideshow()', swap_delay);
}
问题非常严重,因为页面会自动向上滚动这么多秒,并且页面上有很多重要的内容。
有谁知道如何防止这种滚动?
编辑:现在我再次尝试,页面在编辑DOM后滚动到页面顶部,而不是在div的顶部。 我猜这会更有意义,但实际上更糟糕!
我在评论中说的似乎是你问题的根源: img
的高度没有设置,而父div既没有height
也没有min-height
。
那么,会发生什么? 当您替换图像时,在div中没有实际图像的情况下会有一些微秒:旧的图像被丢弃,新图像被加载。
您的父div没有图像= 0高度。 整页较短,滚动跳到顶部。
可能的解决方案:CSS中div的min-height
,或者在附加图像尺寸并设置width
和height
时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.