У меня есть скрипка , чтобы показать мою проблему.
Я сделал наблюдатель пересечения для отложенной загрузки изображений, код:
const images = document.querySelectorAll("[data-src]");
function preloadImage(img){
const src = img.getAttribute("data-src");
if (!src) { return; }
img.src= src;
}
const imgOptions = {
threshold: 0,
rootMargin: "0px 0px 300px 0px"
};
const imgObserver = new IntersectionObserver( (entries, imgObserver) => {
entries.forEach(entry => {
if(!entry.isIntersecting){
return;
} else {
preloadImage(entry.target);
imgObserver.unobserve(entry.target);
}
})
}, imgOptions);
images.forEach( image => {
imgObserver.observe(image);
});
Проблема возникает, когда я l oop через карусель Siema, последнее и первое изображения "выгружаются" Это означает, что src
возвращается к data-src
, несмотря на то, что ему сообщается unobserve
после пересечения.
Чтобы увидеть проблему, просто нажмите «prev» в скрипке. Первое изображение исчезнет, но оно уже загружено.
Почему это происходит, что я делаю не так?
РЕДАКТИРОВАТЬ: Исправлена работа скрипки , спасибо @ ohladkov