JSFiddle - React, Tailwind, and code Playground

HTML

Demo for <a href="http://stackoverflow.com/a/18608622/938089">http://stackoverflow.com/a/18608622/938089</a> by Rob W &lt;gwnRob@gmail.com&gt;
<br><br>
Expected events:<br>
Alert 1<br>
Alert 2

JavaScript

// http://stackoverflow.com/a/18608622/938089
document.addEventListener('beforeload', function(event) {
    var target = event.target;
    if (target.nodeName.toUpperCase() !== 'SCRIPT') return;
    var dispatchEvent = function(name, bubbles, cancelable) {
        var evt = new CustomEvent(name, {
            bubbles: bubbles,
            cancelable: cancelable
        });
        target.dispatchEvent(evt);
        if (!evt.defaultPrevented) {
            //window.dispatchEvent(evt);
        }
        if (evt.defaultPrevented) {
            event.preventDefault();
        }
    };
    var onload = function() {
        cleanup();
        dispatchEvent('afterscriptexecute', true, false);
    };
    var cleanup = function() {
        target.removeEventListener('load', onload, true);
        target.removeEventListener('error', cleanup, true);
    }
    target.addEventListener('error', cleanup, true);
    target.addEventListener('load', onload, true);

    dispatchEvent('beforescriptexecute', true, true);
}, true);

window.addEventListener('afterscriptexecute', function() {
    alert(window.x);
});
document.head.appendChild(document.createElement('script')).src = 'data:text/javascript,x=1';
document.head.appendChild(document.createElement('script')).src = 'data:text/javascript,x=2';