Preview:
const waitLoad = ( statusFunc )=>{
    var imagesLoaded=false;
    var fontsLoaded=false;

    let interval = setInterval(()=>{
        fontsLoaded = fontsLoaded || document.fonts.ready;
        imagesLoaded = imagesLoaded || ([...document.images].filter(el => !el.complete).length == 0);
        statusFunc( fontsLoaded && imagesLoaded );
        if (fontsLoaded && imagesLoaded) clearInterval(interval);
    }, 500);
}

// use waitLoad( ( state ) => console.log(state) )
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter