Вот упрощенная версия того, что я делаю.
HTML
Код: Выделить всё
Код: Выделить всё
const observer = new IntersectionObserver((entries, obs) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
obs.unobserve(img);
}
});
});
function addImage() {
const img = document.createElement('img');
img.dataset.src = 'https://via.placeholder.com/600x400';
img.alt = 'Test image';
document.getElementById('content').appendChild(img);
observer.observe(img);
}
// Simulate async content load
setTimeout(addImage, 1000);
Изображение должно загружаться при попадании в область просмотра.
Фактическое поведение:
Изображение добавляется в DOM, но IntersectionObserver никогда не запускается, даже при прокрутке.
Я проверил это:
- Наблюдатель создается до добавления изображения
- вызывается
Код: Выделить всё
observer.observe(img) - Изображение находится внутри области просмотра
Подробнее здесь: https://stackoverflow.com/questions/798 ... -page-load
Мобильная версия