Spaces:
Runtime error
Runtime error
() => { | |
return new Promise((resolve) => { | |
const filterImage = (img) => { | |
// Filter out images that are too small | |
if (img.width < 100 && img.height < 100) return false; | |
// Filter out images that are not visible | |
const rect = img.getBoundingClientRect(); | |
if (rect.width === 0 || rect.height === 0) return false; | |
// Filter out images with certain class names (e.g., icons, thumbnails) | |
if (img.classList.contains("icon") || img.classList.contains("thumbnail")) return false; | |
// Filter out images with certain patterns in their src (e.g., placeholder images) | |
if (img.src.includes("placeholder") || img.src.includes("icon")) return false; | |
return true; | |
}; | |
const images = Array.from(document.querySelectorAll("img")).filter(filterImage); | |
let imagesLeft = images.length; | |
if (imagesLeft === 0) { | |
resolve(); | |
return; | |
} | |
const checkImage = (img) => { | |
if (img.complete && img.naturalWidth !== 0) { | |
img.setAttribute("width", img.naturalWidth); | |
img.setAttribute("height", img.naturalHeight); | |
imagesLeft--; | |
if (imagesLeft === 0) resolve(); | |
} | |
}; | |
images.forEach((img) => { | |
checkImage(img); | |
if (!img.complete) { | |
img.onload = () => { | |
checkImage(img); | |
}; | |
img.onerror = () => { | |
imagesLeft--; | |
if (imagesLeft === 0) resolve(); | |
}; | |
} | |
}); | |
// Fallback timeout of 5 seconds | |
// setTimeout(() => resolve(), 5000); | |
resolve(); | |
}); | |
}; | |