handleScroll: _.debounce(function () { // 当滚动到底部时触发加载事件 console.log("滚动了吗"); const container = this.$refs.scrollContainer; console.log( container.scrollTop + container.clientHeight >= container.scrollHeight ); console.log( container.scrollTop , container.clientHeight , container.scrollHeight ); if ( Math.ceil(container.scrollTop) + container.clientHeight >= container.scrollHeight ) { if (!this.isLoading) { this.loadMoreData(); } } }, 500),在IOS不生效?
时间: 2024-02-14 12:09:24 浏览: 145
js代码-蚂蚁金服前端面试题 题目 1: debounce 的简单实现
可能是因为iOS对于滚动事件的处理机制与其他平台不同,可能需要在iOS上使用特殊的滚动事件处理方式。你可以尝试使用`window`对象的`scroll`事件,而不是DOM元素的滚动事件,来检测是否滚动到底部。例如,可以使用以下代码:
```
window.addEventListener('scroll', () => {
const container = this.$refs.scrollContainer;
if (Math.ceil(container.scrollTop) + container.clientHeight >= container.scrollHeight) {
if (!this.isLoading) {
this.loadMoreData();
}
}
}, { passive: true });
```
注意,由于iOS的某些限制,需要在`addEventListener`的第三个参数中传递`{ passive: true }`,以告诉浏览器该监听器不会调用`preventDefault()`方法,从而避免一些性能问题。
阅读全文