Бесконечная прокрутка
Приветствую Вас !
Столкнулся с такой проблемой, что при функциях
$(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, время: 13:01. |