@amaui/utils
Version:
49 lines (42 loc) • 1.32 kB
JavaScript
import isEnvironment from './isEnvironment';
const allImagesLoaded = () => {
if (isEnvironment('browser')) {
return new Promise(resolve => {
try {
const images = window.document.getElementsByTagName('img');
const imagesTotal = images.length;
let loaded = 0;
const pending = [];
if (!imagesTotal) return resolve(loaded);
const check = () => {
if (imagesTotal === loaded && !pending.length) return resolve(loaded);
pending.forEach((image, index) => {
if (image.complete && image.naturalWidth !== 0) pending.splice(index, 1);
});
setTimeout(check, 40);
};
const onLoad = event => {
loaded += 1;
if (!event.target.complete || event.target.naturalWidth === 0) pending.push(event.target);
check();
};
const onError = () => {
loaded += 1;
};
for (const image of images) {
if (image.complete) onLoad({
target: image
});else {
image.onload = onLoad;
image.onerror = onError;
}
}
} catch (error) {
console.error("Images loaded: ".concat(error));
resolve(false);
}
});
}
return false;
};
export default allImagesLoaded;