javascript - 在无限滚动中从 URL 加载图像
问题描述
我正在尝试从 API 加载图像并首先填充整个页面。滚动时,我想提出更多请求并继续加载新图像。
所以我试过:
var infiniteScroll = new InfiniteScroll( grid, {
path: 'https://api.giphy.com/v1/stickers/random/z8FVOIy1P7ZwgFXjuHmeZtuAFpBlRYJr',
append: '.grid__item',
status: '.page-load-status',
history: false,
loadOnScroll: true,
});
无限滚动会执行 AJAX 调用吗?我想使用香草 javascript/ES6。
解决方案
您可以使用 Vinilla javascript 实现来代替 InfiniteScroll 库。
监听scroll
窗口中的事件并基于此从 api 加载图像。
我使用了debounce滚动事件,因为它通过垂直滚动触发了数千次。
var currentScrollPosition = window.scrollY;
var timeToWait = 1000; // No of millisecond to wait before call loadImages function.
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
function loadImages(e){
if((currentScrollPosition + 500) < window.scrollY){
currentScrollPosition = window.scrollY;
console.log('dfdf');
// Do you image loading here
}
}
window.onscroll = debounce(loadImages,timeToWait);
jsFiddle 演示 - http://jsfiddle.net/vkxhnd8y/
推荐阅读
- javascript - 如何遍历选定的
- javascript - 为什么 getElementById 在那个词中?g 小,e 和 i 字大写?
- gradle - 无法在 gradler 任务中解析类 HTTPBuilder
- typescript - 可选时传递错误的参数名称时出现打字稿错误
- python-3.x - 如何管理来自不同布局的屏幕
- firebase - 尝试从 React 应用程序连接到 firebase 功能 - cors 问题?
- sql - Plsql 函数查询中的性能调优
- javascript - 如何改变进入通过点击
- dart - final 实例变量可以在 dart 中使用 const 重新分配给其他值
- kubernetes - 为 Kubernetes Deployment 中的每个副本绑定不同的 Persistent Volume