BenderIsGreat34
@BenderIsGreat34
junior front-end

Как выполнить функцию при нужной высоте скролла?

хочу выполнить функцию появления и загрузки прогресс бара на сайте в момент, когда пользователь дошёл до нужного блока где и должен отображаться прогресс бар
пытался при нахождении на нужном блоке вызывать эту функцию, но потом сайт зацикливается из-за того, что при дальнейшем скролле функция продолжает вызываться т.к видит, что блок не закончился
так же пытался поставить условие, чтобы функция отрабатывала один раз, но тоже не помогло
нужный код записан в progressBar()
здесь описана функция которая отвечает за работу навигационной панели где описывается условия достижения нужной высоты для скролла (чтобы делать активное меню в навбаре). в конце слушателя как раз и пихал progressBar()
window.addEventListener('scroll', function(e) {
      const y = window.pageYOffset;
      const scrollTop = $(this).scrollTop();
      if (y >= 50) {
        header.classList.add('fixed-on-scroll');
        header.classList.remove('header');
        logo.src = 'img/logo-dark.png';
        $('.main section').each(function(i) {
          if ($(this).position().top <= y + 120) {
            $('.header__menu-list a.header__menu-link--active').removeClass('header__menu-link--active');
            $('.header__menu-list a').eq(i).addClass('header__menu-link--active');
          }
        });
      } else {
        link[0].classList.add('header__menu-link--active');
        header.classList.add('header');
        header.classList.remove('fixed-on-scroll');
        if ($(window).width() >= 991) {
          logo.src = 'img/logo.png';
        }
      }
let isResizeble = false;
      if (!isResizeble) {
        progressBar();
        isResizeble = true;
      }
});
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@Absolute138
Есть мнение, что нужно отвязать обработчик события scroll при выполнении условия.
см. removeEventListener, unbind и т.д.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы