Бесконечная прокрутка
Приветствую Вас !
Столкнулся с такой проблемой, что при функциях $(document).scroll(function () { //Здесь условие выполнения - скролл = 0. //Подгрузка следующей страницы }); или setInterval(function () { //Здесь условие выполнения - скролл = 0. //Подгрузка следующей страницы }, 500); //1000, 100 - одинаково действие "подгрузки" выполняется неоднократно (2, иногда 3-4 раза) причем с интервалом в ~10-20ms, даже если интервал > 500. Подскажите, пожалуйста, в какую сторону "копать", чтобы подгружало только один раз ? |
Simones, может просто сделать булевую переменную которую делать true если начата загрузка и по окончанию загрузки делать ее false?
|
Я уже по-разному "извращался": и делал переменную true\false загрузки, и цикличное обращение к ф-и через setTimeout (методом рекурсии, кажется), но результат тот же.
Я дошел до того, что нужно как-то сделать прерывания: т.е. следующее событие выполнение подгрузки при скролле 0 должно выполнятся ч-з N-нный интервал, но реализовать это я так и не смог... Но если сделать под функции, то получается вообще "порнография" и повтор уже не несколько раз, а около 8-10. $(document).scroll(function () { setInterval(function () { //Действие },500); )}; |
Работай в направлении первого варианта. Ни setTimeout, ни уж тем более setInterval тебе не нужны.
|
Всем спасибо ! Решил с помощью булевой переменной и таймаута. Уверен, что кому-то пригодится:
var load = false; $(document).scroll(function () { if(load == false) { load = true; setTimeout(function () { load = false; }, 500); } }); |
А почему блокируешь именно на пол секунды? Разве по логике не до момента завершения подгрузки нужно? Ну и положение прокрутки я думаю ты тоже проверяешь, верно?
|
danik.js, потому что походу тестирует на локальном хосте)
|
Часовой пояс GMT +3, время: 11:32. |