Почему ScrollTo иногда зависает?Jquery

Программирование на jquery
Ответить
Anonymous
 Почему ScrollTo иногда зависает?

Сообщение Anonymous »

По сути, на моем веб-сайте есть главный раздел, внизу которого есть кнопка. Кнопка позволяет пользователю автоматически прокручивать мимо героя к следующему элементу.
Проблема: если пользователь прерывает анимацию прокруткой, в следующий раз, когда он нажмет кнопку, появится анимация прокрутки. застревает – или иногда прокручивает только на 10–50 пикселей вместо полных 100 пикселей.
HTML JS

Код: Выделить всё

//Hero Arrow Scroll Button
var isScrolling = false;
let B1 = $(".B1");

$(document).on('click', '#js-hero-arrow', function() {

if (isScrolling === false) {

isScrolling = true;

scrollToElementTop(B1).then(() => {
isScrolling = false;
});

}

});

//Function to add a callback to the scroll element top
function scrollToElementTop (elem) {

const targetPosition = (elem.offset().top + elem.outerHeight(true));

window.scrollTo({
top: targetPosition,
behavior: 'smooth'
});

return new Promise(resolve => {
const scrollHandler = () => {
if (window.scrollY === targetPosition) {
window.removeEventListener('scroll', scrollHandler)
resolve();
}
}
window.addEventListener('scroll', scrollHandler)
});
}
^ Функция «scrollToElementTop» не моя. Я нашел его в stackoverflow и надеялся, что добавление обратного вызова и isScrolling решит мою проблему, но этого не произошло.
Вопросы
Почему это происходит и что я могу сделать, чтобы это исправить?

Подробнее здесь: https://stackoverflow.com/questions/784 ... -sometimes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»