gpt4 book ai didi

javascript - Div onscroll 结束检测不一致

转载 作者:行者123 更新时间:2023-11-29 20:30:55 25 4
gpt4 key购买 nike

我在 React.js 中有一个无限滚动的简单实现。我正在使用 event.target.scrollHeight 来检测 div 的结尾。但它不能跨浏览器一致地工作。例如,当我将 div 的高度设置为 30vh 时,它在 chrome 中有效,但在 firefox 中无效。如果我将它设置为 35vh,它可以在 firefox 中使用,但不能在 chrome 中使用。

我知道我也可以使用引用标记方法,但这种方法有什么问题。

完整代码:https://codesandbox.io/s/simple-infinite-scroll-vei7g代码文件:demo.js

最佳答案

是你的情况有问题。我从控制台注意到的是 firefox给出等于 (e.target.scrollHeight - e.target.scrollTop) - 1 的值.这使得 e.target.scrollHeight - e.target.scrollTop === e.target.clientHeight返回条件false .所以,我只是将条件更改为 e.target.scrollHeight <= e.target.scrollTop + e.target.clientHeight .它在两种浏览器中都运行良好。

  const isScrolling = e => {
const tData =
e.target.scrollHeight <= e.target.scrollTop + e.target.clientHeight;
console.log("scrolling.....", divHeight, tData);

if (tData) {
fetchMoreListItems();
}
};

同样使用ref .

  const isScrolling = () => {
const tData =
scrollCont.current.scrollTop + scrollCont.current.clientHeight >=
scrollCont.current.scrollHeight;
console.log("scrolling.....", divHeight, tData);
if (tData) {
fetchMoreListItems();
}
};

这是 codepen它使用 ref实现。

关于javascript - Div onscroll 结束检测不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298894/

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