Определение при прокрутке до нижней части страницы с помощью Javascript

Я пытаюсь определить, когда прокручиваю страницу вниз (без использования какой-либо библиотеки JS), но до сих пор я немного запутался, какой из следующих вариантов использовать. Самый многообещающий, который я видел, это window.scrollY, но даже при прокрутке вниз страницы, он никогда не соответствует значению window.innerHeight, Какой лучший способ сделать это?

window.innerWidth
window.innerHeight

window.outerWidth
window.outerHeight

window.scrollX
window.scrollY

document.body.scrollWidth
document.body.scrollHeight
document.body.scrollTop
document.body.scrollLeft

document.body.offsetTop
document.body.offsetLeft
document.body.offsetWidth
document.body.offsetHeight

3 ответа

Решение

Когда window.innerHeight + document.body.scrollTop Больше или равно document.body.offsetHeight тогда ты внизу

но так как IE имеет проблемы с этими свойствами, вам нужно использовать альтернативные свойства, такие как

document.documentElement.scrollTop для прокрутки и document.documentElement.clientHeight для высоты окна

полный код: http://jsbin.com/egegu3/6/edit

Будучи ленивым человеком в глубине души, я бы поместил элемент в самый низ DIV и применил к нему плагин jQuery " элемент в поле зрения". (Отказ от ответственности: у меня нет собственного опыта, но это выглядит хорошо.)

Небольшое отличие примера от записи в блоге:

$('#bottomDIV').bind('inview', function (event, visible) {
  if (visible == true) {
    // element is now visible in the viewport
    highlightButtons(); // or whatever you want to do in the context
  }
});

Это отлично работает:

 window.onscroll = function()
 {
    var scrollHeight, totalHeight;
    scrollHeight = document.body.scrollHeight;
    totalHeight = window.scrollY + window.innerHeight;

    if(totalHeight >= scrollHeight)
    {
        console.log("at the bottom");
    }
}
Другие вопросы по тегам