提交 188e64a2 作者: 毛细亚

Merge branch 'release' into 6.2

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