@ozerovlife

Почему Observer перегружает браузер?

Несколько дней все работало нормально. И сегодня начало перегружать страницу. Даже консоль разработчика не могу открыть. Просто виснет вкладка. В любом браузере. Удаляю этот код и все работает нормально.
суть работы это следить за добавлением класса элементу и подсвечивать стрелки слайдера если условие подходит.

function observeSliderNav(wrapperClass, prevButtonClass, nextButtonClass){
    const slides = document.querySelector(`.${wrapperClass}`);
    const prevButtonPath = document.querySelector(`.${prevButtonClass} svg path`);
    const nextButtonPath = document.querySelector(`.${nextButtonClass} svg path`);

    let observer = new MutationObserver( old => {
        let childs = slides.childNodes;
        let slidesArray = [];

        childs.forEach(item => {
            if(item.localName === 'div') slidesArray.push(item)
        })

        slidesArray.forEach((item,index) => {
            if(item.classList.contains('swiper-slide-active') || item.classList.contains('smart-active')){
                if(index === 0){
                    prevButtonPath.setAttribute('fill-opacity', '0.3')
                    nextButtonPath.setAttribute('fill-opacity', '0.8')
                }
                else if(index !== 0){
                    prevButtonPath.setAttribute('fill-opacity', '0.8')
                    nextButtonPath.setAttribute('fill-opacity', '0.8')
                }
                if(index === slidesArray.length - 1){
                    nextButtonPath.setAttribute('fill-opacity', '0.3')
                }
            }
        })
    })

    observer.observe(slides, {
        childList: true,
        subtree: true,
        characterData: true,
        attributes: true
    })
}

window.addEventListener('load', () => {
    observeSliderNav('swiper-wrapper', 'swiper__prev_sett ', 'swiper__next_sett' );

})
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
Xuxicheta
@Xuxicheta
инженер
Вы включаете наблюдение за изменением аттрибутов, а в самом коллбэке наблюдения изменяете аттрибуты. Ничего не смущает?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $
Artezio Москва
от 160 000 до 220 000 ₽