JSFiddle - React, Tailwind, and code Playground

HTML

<button id="loadImages">Load</button>


<div id="images">
    <img src="http://placekitten.com/21/20" alt="" />
</div>

JavaScript

// The DOM changes watcher
var observeDOM = (function(){
    var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
        eventListenerSupported = window.addEventListener;

    return function(obj, callback){
        if( MutationObserver ){
            // define a new observer
            var obs = new MutationObserver(function(mutations, observer){
                if( mutations[0].addedNodes.length || mutations[0].removedNodes.length )
                    callback();
            });
            // have the observer observe foo for changes in children
            obs.observe( obj, { childList:true, subtree:true });
        }
        else if( eventListenerSupported ){
            obj.addEventListener('DOMNodeInserted', callback, false);
            obj.addEventListener('DOMNodeRemoved', callback, false);
        }
    }
})();

// Observe the DOM for changes
observeDOM(document.body, function(){ 
    checkNewImages();
});

var checkNewImages = function() {
    var images = document.querySelectorAll('img:not([data-loaded]');
    for(var i = 0; i < images.length; i++) {
        addImageLoadedEvent(images[i]);   
    }
}

var addImageLoadedEvent = function(img) {
    if (img.complete) {
        onImageLoaded(img);
    } else {
        img.addEventListener('load', function(event) {
            onImageLoaded(event.target);   
        });
    }
}

// Fired once an image is loaded
var onImageLoaded = function(img) {
    img.setAttribute('data-loaded', 'true');
    
    if(document.querySelectorAll('img:not([data-loaded])').length === 0) {
        // doWhateverYouNeedToDoWhenAnImageIsLoaded();
        alert('all new images loaded');
    }
}





// Append a random new (large) image to the DOM to test the events
document.getElementById('loadImages').onclick = function() {
    var rand = 1200 + (Math.floor(Math.random() * 100) + 1);
    var newImages = '<img src="http://placekitten.com/20/22" />' 
                    + '<img...