Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Конец страницы скролл (https://javascript.ru/forum/events/74324-konec-stranicy-skroll.html)

Quper 01.07.2018 18:08

Конец страницы скролл
 
Мне необходимо вызвать событие когда пользователь докрутит страницу до самого низа, как определить что пользователь достиг конца документа?

На чистом JS необходимо!

рони 01.07.2018 19:34

Quper,
https://learn.javascript.ru/metrics-window

j0hnik 01.07.2018 20:43

onscroll = function(){
	if(window.scrollY+1 >= document.documentElement.scrollHeight-document.documentElement.clientHeight) alert('Конец прокрутки');
};

рони 01.07.2018 21:01

j0hnik,
:) а если DOCTYPE забудут или window.scrollY меньше scrollМах или ie ?

j0hnik 01.07.2018 21:54

onscroll = function(){
	var scrollHeight = Math.max(
		document.body.scrollHeight, document.documentElement.scrollHeight,
		document.body.offsetHeight, document.documentElement.offsetHeight,
		document.body.clientHeight, document.documentElement.clientHeight
	);

	if(window.scrollY+1 >= scrollHeight - innerHeight) alert('Конец прокрутки');
};


рони,

рони 01.07.2018 22:22

j0hnik,
сделай макет, открой в браузере, снизу открой консоль, проверь работу скрипта.

j0hnik 01.07.2018 22:37

Цитата:

Сообщение от рони
сделай макет, открой в браузере, снизу открой консоль, проверь работу скрипта.

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body style="height: 3000px">
<script>

onscroll = function(){
	var scrollHeight = Math.max(
		document.body.scrollHeight, document.documentElement.scrollHeight,
		document.body.offsetHeight, document.documentElement.offsetHeight,
		document.body.clientHeight, document.documentElement.clientHeight
	);

	if(window.scrollY >= scrollHeight - innerHeight) alert('Конец прокрутки');
};
  </script>
</body>
</html>

таки работает, в каком браузере у вас проблемы?

рони 01.07.2018 22:40

Цитата:

Сообщение от j0hnik
таки работает, в каком браузере у вас проблемы?

во всех

j0hnik 01.07.2018 23:49

странно, у меня все ровно тоже во всех.
давайте разбираться друг мой ))
какая версия ОС и версии браузеров?
с кодом выше что нибудь делали?

рони 02.07.2018 00:02

j0hnik,
Windows 10 версия 1803, браузеры последние версии, пост №7, алерта нет в конце прокрутки.
напишите, если не трудно, у кого-то ещё работает это?

j0hnik 02.07.2018 00:10

:cray:
Народ хелп!

рони 02.07.2018 00:11

j0hnik,
в Edge работает,
Firefox 61, Google Chrome 67, ie 11 - не работает

j0hnik 02.07.2018 00:14

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body style="height: 3000px">
<script>
onscroll = function(){
	var scrollHeight = Math.max(
		document.body.scrollHeight, document.documentElement.scrollHeight,
		document.body.offsetHeight, document.documentElement.offsetHeight,
		document.body.clientHeight, document.documentElement.clientHeight
	);

console.log(window.scrollY - scrollHeight + innerHeight) ;
};

  </script>
</body>
</html>


рони, какая цифра последняя?

рони 02.07.2018 00:22

j0hnik,
-0.39990234375

j0hnik 02.07.2018 00:33

рони,
Кажись понял в чем проблема
Либо из за масштаба страницы или разрешения экрана.
У меня только так дробные появляются.

рони 02.07.2018 00:38

Цитата:

Сообщение от j0hnik
Кажись понял в чем проблема

Цитата:

Сообщение от рони
window.scrollY меньше scrollМах

обычно делают так от 1 до 8
if(window.scrollY + 5 >= scrollHeight - innerHeight)

j0hnik 02.07.2018 00:39

рони,
Не любите вы мелкий текст, у вас масштаб 125% =) угадал?

рони 02.07.2018 00:44

j0hnik,
я люблю кроссбраузерный код! :)

j0hnik 02.07.2018 00:45

Цитата:

Сообщение от рони
if(window.scrollY + 5 >= scrollHeight - innerHeight)

Да кажисть так наженей, можно даже +1 погрешность <1 пикселя

j0hnik 02.07.2018 00:55

рони,
я ошибся 250% машстаб у вас :blink:

j0hnik 02.07.2018 00:57

поправил посты на всякий случай

Quper 03.07.2018 07:37

Цитата:

Сообщение от j0hnik (Сообщение 488784)
поправил посты на всякий случай

Спасибо очень помогли, не работает только в IE11

DDim1000 07.09.2018 20:21

Здравствуйте!
Подскажите пожалуйста, почему alert срабатывает тогда, когда ползунок вверху? Как сделать, чтоб было наоборот?
$(window).scroll(function() 
           {
             if  ($(window).scrollTop() <= $(document).height() - $(window).height()) 
               {
                 alert('Пользователь долистал до низа страницы');
               }
         });

j0hnik 07.09.2018 20:31

if ($(window).scrollTop() >= $(document).height() - $(window).height())

DDim1000 07.09.2018 20:39

Цитата:

Сообщение от j0hnik (Сообщение 494213)
if ($(window).scrollTop() >= $(document).height() - $(window).height())

Так при каждом сдвиги ползунка alert срабатывает...

j0hnik 07.09.2018 20:43

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		body{
			height: 3000px;
		}
	</style>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>

	<script>
		$(window).scroll(function() {
			if  ($(window).scrollTop() >= $(document).height() - $(window).height()) 
			{
				alert('Пользователь долистал до низа страницы');
			}
		});

	</script>

</body>
</html>


в каком браузере?

j0hnik 07.09.2018 20:44

или нужно чтобы раз сработал, а повторно при прокрутке до низа не срабатывал?

DDim1000 07.09.2018 21:08

Цитата:

Сообщение от j0hnik (Сообщение 494222)
или нужно чтобы раз сработал, а повторно при прокрутке до низа не срабатывал?

Нужно чтоб только внизу\в конце страницы срабатывал.

j0hnik 07.09.2018 21:13

DDim1000,
26 пост у вас правильно работает?

DDim1000 07.09.2018 21:23

Цитата:

Сообщение от j0hnik (Сообщение 494233)
DDim1000,
26 пост у вас правильно работает?

Он очень странно работает, при наведении на бегунок срабатывает alert, и бегунок уходит туда, куда наводишь стрелку мыши.
https://youtu.be/BnM6D-gHlao

j0hnik 07.09.2018 21:24

DDim1000,
если сам пост правильно, дело в чем то другом

DDim1000 07.09.2018 21:32

Цитата:

Сообщение от j0hnik (Сообщение 494238)
DDim1000,
если сам пост правильно, дело в чем то другом

Посмотрите, пожалуйста, видео: https://youtu.be/BnM6D-gHlao , почему так реагирует при наведении мыши на бегунок?: https://youtu.be/BnM6D-gHlao

DDim1000 07.09.2018 22:13

Цитата:

Сообщение от j0hnik (Сообщение 494238)
DDim1000,
если сам пост правильно, дело в чем то другом

Спасибо! Пост работает!

j0hnik 07.09.2018 23:02

сайт напишите, гляну

DDim1000 08.09.2018 07:10

Цитата:

Сообщение от j0hnik (Сообщение 494250)
сайт напишите, гляну

Сайт не в сети... Спасибо!


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