Мне нужно определить, прокручивается ли пользователь внизу страницы. Если они находятся внизу страницы, когда я добавляю новый контент внизу, я автоматически прокручиваю их на новом дне. Если они не находятся внизу, они читают предыдущий контент выше на странице, поэтому я не хочу автоматически прокручивать их, поскольку они хотят остаться там, где они есть.
Как я могу определить, прокручивается ли пользователь внизу страницы или прокручивается ли он выше на странице?
javascript
Андрей
источник
источник
Ответы:
Посмотреть демо
источник
document.documentElement.scrollTop
вместоwindow.scrollY
IE. Не уверен, какие версии IE поддерживаютсяwindow.scrollY
.Обновлен код для всех основных браузеров (включая IE10 и IE11)
Проблема с текущим принятым ответом заключается в том, что
window.scrollY
он недоступен в IE.Вот цитата из mdn относительно scrollY:
И рабочий фрагмент:
Показать фрагмент кода
Примечание для Mac
Судя по комментарию @ Raphaël, в Mac возникла проблема из-за небольшого смещения.
Работает следующее обновленное условие:
источник
(window.innerHeight + window.pageYOffset) >= document.body.offsetHeight - 2
(window.innerHeight + Math.ceil(window.pageYOffset + 1)) >= document.body.offsetHeight
.Принятый ответ не работал для меня. Это сделал:
Если вы ищете поддержку старых браузеров (IE9), используйте псевдоним,
window.pageYOffset
который имеет немного лучшую поддержку.источник
Я искал ответ, но не нашел точного. Вот чистое решение javascript, которое работает с последними версиями Firefox, IE и Chrome:
источник
((document.documentElement && document.documentElement.scrollHeight) || document.body.scrollHeight)
вместо того,document.body.scrollHeight
чтобы просто учитывать случаи, когда html / body установлены на высоту: 100%Это работает
Если вы ищете поддержку старых браузеров (IE9), замените window.scrollY на window.pageYOffset
источник
Я только начал смотреть на это, и ответы здесь помогли мне, так что спасибо за это. Я немного расширил, чтобы код был безопасным вплоть до IE7:
Надеюсь, это окажется полезным для кого-то.
Здесь есть скрипка;)
источник
Если вы настраиваете
height: 100%
какой-либо контейнер<div id="wrapper">
, то работает следующий код (проверено в Chrome):источник
Этот ответ зафиксирует крайние случаи, это происходит потому , что
pageYOffset
это вdouble
то время ,innerHeight
иoffsetHeight
являютсяlong
, поэтому , когда браузер дает вам информацию, вы можете быть пиксель коротким. Например: внизу страницы мы имеемправда
window.innerHeight = 10.2
правда
window.pageYOffset = 5.4
правда
document.body.offsetHeight = 15.6
Наш расчет тогда становится: 10 + 5.4> = 16, что неверно
Чтобы это исправить мы можем сделать
Math.ceil
поpageYOffset
значению.Надеюсь, это поможет.
источник
если ты любишь jquery
источник
Вы можете заглянуть в бесконечный свиток jquery:
http://www.infinite-scroll.com/infinite-scroll-jquery-plugin/
Похоже, это делает то, что вы просите, при условии, что вы готовы использовать библиотеку jquery и не надеетесь на строгий чистый метод JS.
источник
Удивительно, но ни одно из решений не сработало для меня. Я думаю, это потому, что мой
css
был испорчен, иbody
не использовал весь контент при использованииheight: 100%
(пока не знаю, почему). Однако, ища решение, я придумал что-то хорошее ... в основном то же самое, но, возможно, стоит взглянуть - я новичок в программировании, так что извините, если он делает то же самое медленнее, менее поддерживается или что-то вроде который...источник
источник
Этот код работал для меня в Firefox и IE, а также.
источник
Использование
defaultView
иdocumentElement
со встроенным фрагментом функционального кода:источник
Вы можете проверить, является ли объединенный результат высоты окна и прокрутки больше, чем у тела
if (window.innerHeight + window.scrollY >= document.body.scrollHeight) {}
источник
Мне пришлось придумать способ (на Java) систематически прокручивать вниз в поисках компонента, для которого я не знал правильный XPath (длинная история, так что просто подыграйте). Как я только что сказал, мне нужно было прокрутить вниз при поиске компонента и остановиться либо тогда, когда компонент был найден, либо достигнут конец страницы.
Следующий фрагмент кода управляет прокруткой вниз до нижней части страницы:
Кстати, окно развернуто до того, как этот фрагмент кода будет выполнен.
источник
Принятый ответ не работал для меня. Это сделал:
источник
Я нашел два решения, которые сработали для меня:
И другие:
источник