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;
      }
});
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
@Absolute138
Есть мнение, что нужно отвязать обработчик события scroll при выполнении условия.
см. removeEventListener, unbind и т.д.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 110 000 до 150 000 руб.
Александрия Москва
от 200 000 до 250 000 руб.
Алгоритмика Москва
от 120 000 до 200 000 руб.
24 авг. 2019, в 12:36
5000 руб./за проект
24 авг. 2019, в 11:31
30000 руб./за проект