提交 d407787c 作者: 毛细亚

更新滚动方法

上级 fa19a499
......@@ -32,16 +32,22 @@ const InfiniteScroll = {
},
unbind(el) {
// 解绑事件
// 解绑事件 - 添加安全检查
if (el.__infinite_scroll_container && el.__infinite_scroll_handler) {
unbindEvents(el, el.__infinite_scroll_container, el.__infinite_scroll_handler);
}
// 清理引用
// 清理引用 - 确保安全清理
if (el.__infinite_scroll_container) {
delete el.__infinite_scroll_container;
}
if (el.__infinite_scroll_handler) {
delete el.__infinite_scroll_handler;
}
if (el.__infinite_scroll_options) {
delete el.__infinite_scroll_options;
}
}
};
// 解析配置选项
......@@ -61,13 +67,19 @@ function createScrollHandler(el, binding, vnode) {
return function() {
const options = el.__infinite_scroll_options;
// 添加完整的安全检查 - 确保 options 存在
if (!options) return;
// 检查是否禁用
if (options && options.disabled) return;
if (options.disabled) return;
const scrollContainer = el.__infinite_scroll_container;
const isBottom = isScrollBottom(scrollContainer, el, options.distance);
// 确保滚动容器存在
if (!scrollContainer) return;
if (isBottom) {
const isBottom = isScrollBottom(scrollContainer, el, options.distance || 30);
if (isBottom && typeof options.loadMore === 'function') {
// 调用加载函数
options.loadMore();
}
......@@ -115,18 +127,28 @@ function getScrollContainer(el) {
// 判断是否滚动到底部
function isScrollBottom(scrollContainer, el, distance = 30) {
// 添加安全检查
if (!scrollContainer || !el) return false;
// 确保 distance 是数字
const safeDistance = typeof distance === 'number' ? distance : 30;
// window情况
if (scrollContainer === window) {
return (
Math.ceil(window.innerHeight + window.pageYOffset) >=
document.documentElement.scrollHeight - distance
document.documentElement.scrollHeight - safeDistance
);
}
// DOM元素情况
// DOM元素情况 - 添加安全检查
if (!scrollContainer.scrollTop && scrollContainer.scrollTop !== 0) return false;
if (!scrollContainer.clientHeight) return false;
if (!scrollContainer.scrollHeight) return false;
return (
Math.ceil(scrollContainer.scrollTop + scrollContainer.clientHeight) >=
scrollContainer.scrollHeight - distance
scrollContainer.scrollHeight - safeDistance
);
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论