Я пытаюсь определить, прокручивается ли пользователь вверх или вниз, и я нашел код в другом ответе, который, кажется, помогает мне. Моя проблема с этим кодом заключается в том, что я не могу last_scroll_position
голову, как захватить last_scroll_position
. У меня есть функция, настроенная на то, что возвращает scrollTop
поэтому получение значения для переменной current_position
не является проблемой, но получение значения для last_scroll_position
кажется немного сложным.
Вот ответ, который я нашел...
Храните переменную, скажем, last_scroll_position, и когда у вас есть прокрутка, если last_scroll_position - current_position> 0, пользователь прокручивается вверх и вниз, если он меньше 0.
Я рекомендую проверить этот пример: qaru.site/questions/24939/...
Событие прокрутки ведет себя странно в Firefox, его много раз вызывают из-за прокрутки гладкости, но он работает, вот пример:
//creates an element to print the scroll position
$("<p id='test'>").appendTo("body").css({
padding: "5px 7px",
background: "#e9e9e9",
position: "fixed",
bottom: "35px",
left: "35px" });
//binds the "scroll" event
$(window).scroll(function (e) {
var target = e.currentTarget,
scrollTop = target.scrollTop || window.pageYOffset,
scrollHeight = target.scrollHeight || document.body.scrollHeight,
lastScrollTop = $(target).data("lastScrollTop") || 0,
scrollText = "";
if (scrollTop > lastScrollTop) {
scrollText = "<b>scroll down</b>";
} else {
scrollText = "<b>scroll up</b>";
}
$("#test").html(scrollText +
"<br>scrollTop: " + scrollTop +
"<br>lastScrollTop: " + lastScrollTop);
if (scrollHeight - scrollTop === $(target).innerHeight()) {
console.log("► End of scroll");
}
//saves the current scrollTop
$(target).data("lastScrollTop", scrollTop);
});