onscroll при отсутствии сколла

298
07 марта 2017, 15:50

Есть такой код, который говорит, что при скроллинге скролл достигнул конца страницы.

$(window).scroll(function(){
    if ($(window).scrollTop() == $(document).height() - $(window).height())
      console.log('hey!');
});

Нормально работает.
Но на десктопной версии событие не обрабатывается, если страница не имеет скролла (свойство overflow не учитывается в условии, очевидно, но и не надо).
А нужно отрабатывать всегда, есть он или нет, при скроллинге страницы.
Как сделать код универсальнее под эту ситуацию? Также прошу подумать о мобильном скроллинге. Отлавливать конкретно колёсико было бы не лучшим решением, я думаю.

Answer 1

Разве что так:

window.addEventListener('newscroll', function (e) {
    // обработка
}, false);
window.onwheel = function(e) {
    var event = new Event('newscroll');
    window.dispatchEvent(event);
}
document.ontouchmove = function(e) {
    var event = new Event('newscroll');
    window.dispatchEvent(event);
}

Но это не во всех браузерах работает.

А вот такое должно сработать везде, в ie6 точно:

document['newscroll'] = function(e) {
    // обработка
}
document.onmousewheel = function(e) {
    document['newscroll']({type:'newscroll'});
}
document.touchmove = function(e) {
    document['newscroll']({type:'newscroll'});
}

Если нет скролла, то без ловли колеса вряд ли получится.

READ ALSO
Как работает функция click в jquery?

Как работает функция click в jquery?

Вот например, что делает вот эта?

314
Фон со звездами. Градиентом

Фон со звездами. Градиентом

Всем здравствуйте

251