Задать вопрос
@PeterPetrov

Смена hash в url при скролле?

Всем привет! Подскажите пожалуйста как реализовать смену hash в url при скролле до определенных блоков
  • Вопрос задан
  • 319 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 2
ronnie85
@ronnie85
Fullstack Dev
window.addEventListener("scroll", (e) => {
  const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
  const elem = document.getElementById("target");
  if (elem?.offsetTop <= scrollTop) {
    document.location.hash = elem.id;
  } else {
    document.location.hash = '';
  }
}, false);
Ответ написан
Комментировать
@PeterPetrov Автор вопроса
Вот что я попробовал, но после нескольких прокруток туда сюда вылазит это Throttling navigation to prevent the browser from hanging. See https://crbug.com/1038223. Command line switch --disable-ipc-flooding-protection can be used to bypass the protection
block.forEach((el) => {
        const pos = el.getBoundingClientRect();

        if (pos.top < window.innerHeight / 2 && pos.bottom > 0) {
          history.pushState(null, null, `#${el.id}`);
        } else {
           history.pushState(null, null, '');
        }
      });
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы