Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как определить что страница прокручена до конца? (https://javascript.ru/forum/events/80912-kak-opredelit-chto-stranica-prokruchena-do-konca.html)

DDim1000 24.08.2020 20:14

Как определить что страница прокручена до конца?
 
Здравствуйте!
Подскажите, пожалуйста, как программно определить что пользователь прокрутил веб-страницу до конца?

рони 24.08.2020 20:53

Цитата:

Сообщение от DDim1000
Как определить что страница прокручена до конца?

высота окна + скролл == высота документа

рони 24.08.2020 20:59

DDim1000,
:-?
https://javascript.ru/forum/events/7...tml#post488778

DDim1000 24.08.2020 21:06

Цитата:

Сообщение от рони (Сообщение 528219)
высота окна + скролл == высота документа

Я так и делал, но код, почему то, не срабатывает: https://jsfiddle.net/zyjshg2p/1/
$(window).scroll(function() {
       if($(window).scrollTop() + $(window).height() == getDocHeight()) {
           alert("bottom!");
       }
   });

рони 24.08.2020 21:09

DDim1000,
getDocHeight это что?

рони 24.08.2020 21:13

DDim1000,
добавил jquery и убрал getDocHeight
https://jsfiddle.net/tpj38uc5/

DDim1000 28.08.2020 08:35

рони, большое спасибо!

DDim1000 29.08.2020 15:27

Еще один вопрос возник: Подскажите, пожалуйста, как бороться с ложным срабатывание функции? Дело в том, что контент подгружается через секунду после того, как страница полностью прокручена, и в это время срабатывает функция.

Nexus 29.08.2020 15:47

Цитата:

Сообщение от DDim1000
контент подгружается через секунду после того, как страница полностью прокручена

Обычно новый контент подгружают ДО того, как страница прокручивается до конца.

Я предпочитаю подгружать контент за 300 пикселей до достижения пользователем конца страницы.

рони 29.08.2020 15:49

DDim1000,
выстави флаг (глобально или в зоне видимости функции запроса данных), и не запускай запрос данных,если флаг не сброшен при получении новой порции данных.

DDim1000 29.08.2020 16:27

Цитата:

Сообщение от рони (Сообщение 528327)
DDim1000,
выстави флаг (глобально или в зоне видимости функции запроса данных), и не запускай запрос данных,если флаг не сброшен при получении новой порции данных.

А как это делается, как выставить флаг?

рони 29.08.2020 16:38

DDim1000,
let key;
const fn = () => {
if(key) return;
key = true;
....await fetch
key = false;

}

DDim1000 29.08.2020 18:40

Цитата:

Сообщение от рони (Сообщение 528329)
DDim1000,
let key;
const fn = () => {
if(key) return;
key = true;
....await fetch
key = false;

}

Что то не могу понять, как это применить... Мне нужно после прокрутки странице, проверить что контент полностью загружен.
collect_link_file( 
         window.scrollBy(0,10);
         $(window).scroll(function() {
              
         if($(window).scrollTop()+$(window).height()>=$(document).height())
                {
                    ........
                    alert("Сбор завершен!");   
                }
              else{   
                    collect_link_file();
                }
        }
);

рони 29.08.2020 18:44

DDim1000,
let key;
const fn = () => {
if(key) return;
key = true;
....await fetch
key = false;

}
 $(window).scroll(function() {
         if($(window).scrollTop()+$(window).height()>=$(document).height()) fn()

               });

рони 29.08.2020 19:04

DDim1000,
http://falbar.ru/article/delaem-podg...utke-stranitsy

искать Ajax подгрузка при прокрутке

DDim1000 29.08.2020 21:18

Почему-то ошибка: Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

window.scrollBy(0,1810);    
           let key;
const fn = () => {
if(key) return;
key = true;
`
key = false;

}
 $(window).scroll(function() {
         if($(window).scrollTop()+$(window).height()>=$(document).height()) fn()

               });

рони 29.08.2020 23:31

DDim1000,
замените let и const на var.


Часовой пояс GMT +3, время: 19:29.