zkrvndm
@zkrvndm
Архитектор решений

Существует ли обработчики срабатывающие, когда элемент попал в зону видимости страницы?

Хочу отрисовывать элементы по мере прокуртки, т. е. элемент появился в зоне зрения и мы тут же берем его в работу. Существуют ли нативные обработчики для подобных целей? Чтобы срабатывал, когда элемент оказался в области обзора.

У меня на странице много-много полей textarea, для их корректного отображения я использую плагин autosize, но у плагина есть жирный минус: если на вход подать сразу много элементов, страница секунд на 20 подвисает. Соответсвенно, я хочу решить проблему подавая элементы постепенно, лишь по мере прокуртки страницы - вешать autosize только на элементы оказавшиеся в зоне видимости.
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
zkrvndm
@zkrvndm Автор вопроса
Архитектор решений
Удалось реализовать ленивую отрисовку высоты textarea - элементы идут в обработку по мере прокрутки страницы и входа в область видимости (с запасом, сверху на 100% и снизу на 300%). Решение следующее:
observer = new IntersectionObserver(onView, { threshold: [0], rootMargin: '100% 0px 300% 0px' });

textarea = document.querySelectorAll('textarea');

for (l = 0; l < tarrr.length; l++) {
	observer.observe(textarea[l]);
}

function onView(massiv) {
    
    for (j = 0; j < massiv.length; j++) {
        
        if (massiv[j].isIntersecting === true) {
            
            autosize(massiv[j].target);
            
        }
        
    }
    
}

Спасибо Алексей Тен за наводку =)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект