gpt4 book ai didi

javascript - 防止整页在 load() 时向上滚动

转载 作者:行者123 更新时间:2023-11-28 15:50:22 25 4
gpt4 key购买 nike

我正在使用 .load() 每 5 秒刷新一次 div 的内容。

div 更新时,整个页面将向上滚动到顶部。有什么办法可以防止这种情况发生吗?

<body>    
<app-header condenses reveals effects="waterfall">
<app-toolbar>
<div main-title>Title</div>
<a href="./login/logout.php" tabindex="-1"><paper-button class="custom white" raised>Log Out</paper-button></a>
</app-toolbar>
</app-header>

<div id="loadcards"></div>
</body>
$("#loadcards").load("getGraph.php");

$(document).ready(function(){
setInterval(function(){
$("#loadcards").load("getGraph.php");
},5000);
});

最佳答案

当您重新加载时,您的页面会滚动回顶部,因为您的浏览器很快就没有您的 div 的任何内容。这会导致您的页面内容变得太小以至于不需要滚动条,但是当重新应用内容时它可能会变得足够大以再次需要滚动条。

选项 1

您可以在每次调用重新加载之前将 Y 偏移量设置为页面顶部,然后在页面完成重新加载时滚动回该偏移量(或者如果页面比以前小,则至少尽可能向下滚动) .

您可以使用以下代码获取当前距窗口顶部的偏移量:

var offsetY = $(window).scrollTop();

如果你想回滚到你之前所在的位置,你可以通过调用以下命令来实现:

$('html, body').animate({
scrollTop: $(this).offset().top
}, 300);

这将逐渐滚动,但如果您希望它立即滚动,您可以将 300 设置为 0。

根据页面加载的效率,您可能仍会看到页面内容跳转。

选项 2

您也可以将整个 DIV 放入一个具有固定高度的容器中,然后重新加载其中的内容。您应该至少在容器 div 上设置一个最小高度。

<div style="min-height: SOME_VALUE">
<div id="loadcards"></div>
</div>

将 SOME_VALUE 设置为最接近实际页面大小的值。这也应该可以防止页面跳转,但会导致您的页面具有最小高度,即使实际内容较小也是如此。

选项 3

最先进的解决方案是使用容器 DIV 并将高度设置为重新加载之前的 LoadPage 高度。这样它只会在您重新加载页面后重置。

<div id="cardscontainer" style="min-height: SOME_VALUE">
<div id="loadcards"></div>
</div>

对您的 JS 进行以下更改:

setInterval(function(){
$("#loadcards").load("getGraph.php");
$('#cardscontainer').height($('#loadcards').height());
},5000);

编辑:我交换了 SetInterval 回调函数中的 2 个函数,因为如果 LoadCards DIV 比以前小,它会导致奇怪的行为。

关于javascript - 防止整页在 load() 时向上滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41959414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com