2016-04-21 3 views
0

Я работаю с страницей «бесконечный прокрутки», которая вызывает до 40 элементов в то время, когда пользователь прокручивается в нижней части страницы. Как определить момент загрузки всего содержимого самого последнего набора?Подождите, пока не закончится бесконечная прокрутка. Загрузка - Javascript

Это работает только для начальной загрузки страницы:

$(window).load(function() { 
    // Do something 
}); 

Есть ли что-то подобное, когда есть «нагрузка» вскоре после того, как страница уже загрузится?

Извините, если это повторение другого вопроса. Я не смог найти решение нигде.

+0

Если его бесконечность, как вы можете дождаться конца? lol –

+0

@AdamBuchananSmith - Я говорю о том, когда следующий набор элементов завершил загрузку. Бесконечная прокрутка не загружает сразу все возможные данные, просто увеличивает количество данных до тех пор, пока пользователь не выполнит действие для загрузки следующего приращения (обычно это прокрутка около нижней части страницы). Я хочу определить, когда последний шаг завершен. – Andrew

+0

Я никогда не читал вопрос, я только читал заголовок –

ответ

1

После того, как еще несколько копаний вокруг, я использовал вариацию этого 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', чтобы запустить счет. Я заметил, что иногда изображение может выходить из строя (что хорошо в этом конкретном случае), и он будет выкидывать счетчик и никогда не запускать обратный вызов.

==================

EDIT 04/27/16: Я с тех пор нашел плагин, который может справиться с этим для вас, и кажется, хорошо работать (за исключением нескольких последующих нагрузок до того, как будет загружена предыдущая загрузка). Выезд imagesLoaded.

Смежные вопросы