等待无限滚动完成加载 - Javascript
Wait Until Infinite Scroll Finishes Loading - Javascript
我正在使用 "infinite scroll" 页面,当用户滚动到页面底部时,该页面一次最多调用 40 个元素。如何检测最新集合的所有内容已加载的时刻?
这仅适用于初始页面加载:
$(window).load(function() {
// Do something
});
当页面加载完成很久之后 "load" 是否有类似的东西?
抱歉,如果这是另一个问题的重复。我无法在其他任何地方找到解决方案。
经过进一步挖掘,我使用了这个 question/answer 的变体。
我的最终结果是这样的:
function ($container, previousCount, callback) {
var _imgs = $container.find('img'),
_newImages = _imgs.slice(previousCount), // 'start index' for new images
imgCount = _newImages.length, // count how many new ones exist
counter = 0;
_imgs.on('load', function() { // Count loaded
runCallback(20, callback);
}).on('error', function() { // Count errors, anyway, to reach total
runCallback(20, callback);
});
function runCallback(counterLimit, callback) {
// if counter meets new count or hits counter limit, run callback
counter++;
if (counter == imgCount || counter == counterLimit) {
callback();
}
}
}
我为什么需要这种方式的一些怪癖。 previousCount
实际上可以大于当前 DOM 中的图像总数,这是因为人们可以在无限滚动的不同部分之间跳跃。因此,还有 counter == counterLimit
.
的检查
此外,我需要 运行 一个脚本,当新的图像集加载完成时,无论它们是成功还是失败。这就是为什么我同时使用 .on('load'
和 .on('error'
来计算 运行 的原因。我注意到有时图像可能会出错(在这种特殊情况下这很好)并且它会抛出计数并且永远不会触发回调。
==================
编辑 2016 年 4 月 27 日: 从那以后我发现了一个插件可以为您处理这个问题并且似乎运行良好(除了之前的几个后续加载加载完成加载)。查看 imagesLoaded。
我正在使用 "infinite scroll" 页面,当用户滚动到页面底部时,该页面一次最多调用 40 个元素。如何检测最新集合的所有内容已加载的时刻?
这仅适用于初始页面加载:
$(window).load(function() {
// Do something
});
当页面加载完成很久之后 "load" 是否有类似的东西?
抱歉,如果这是另一个问题的重复。我无法在其他任何地方找到解决方案。
经过进一步挖掘,我使用了这个 question/answer 的变体。
我的最终结果是这样的:
function ($container, previousCount, callback) {
var _imgs = $container.find('img'),
_newImages = _imgs.slice(previousCount), // 'start index' for new images
imgCount = _newImages.length, // count how many new ones exist
counter = 0;
_imgs.on('load', function() { // Count loaded
runCallback(20, callback);
}).on('error', function() { // Count errors, anyway, to reach total
runCallback(20, callback);
});
function runCallback(counterLimit, callback) {
// if counter meets new count or hits counter limit, run callback
counter++;
if (counter == imgCount || counter == counterLimit) {
callback();
}
}
}
我为什么需要这种方式的一些怪癖。 previousCount
实际上可以大于当前 DOM 中的图像总数,这是因为人们可以在无限滚动的不同部分之间跳跃。因此,还有 counter == counterLimit
.
此外,我需要 运行 一个脚本,当新的图像集加载完成时,无论它们是成功还是失败。这就是为什么我同时使用 .on('load'
和 .on('error'
来计算 运行 的原因。我注意到有时图像可能会出错(在这种特殊情况下这很好)并且它会抛出计数并且永远不会触发回调。
==================
编辑 2016 年 4 月 27 日: 从那以后我发现了一个插件可以为您处理这个问题并且似乎运行良好(除了之前的几个后续加载加载完成加载)。查看 imagesLoaded。