JSFiddle - React, Tailwind, and code Playground
HTML
<script>
;(function () {
var createElement = document.createElement;
var pendingGaRequests = 0;
var gaUrl = /www[.]google-analytics[.]com/i;
var onComplete;
function addEvent(elem, evnt, func)
{
if (elem.addEventListener) {
elem.addEventListener(evnt, func, false);
} else if (elem.attachEvent) {
elem.attachEvent('on' + evnt, func);
} else {
elem['on' + evnt] = func;
}
}
function removeEvent(elem, evnt, func)
{
if (elem.removeEventListener) {
elem.removeEventListener(evnt, func, false);
} else if (elem.detachEvent) {
elem.detachEvent('on' + evnt, func);
} else {
elem['on' + evnt] = null;
}
}
function addSrcChangeEvent(elem, callback)
{
function listen(listElem)
{
pendingGaRequests += 1;
addEvent(listElem, 'error', callback);
addEvent(listElem, 'load', callback);
}
var MutationObserverReal = window.MutationObserver || window.WebKitMutationObserver || false;
if (!!MutationObserverReal) {
elem._observer = new MutationObserverReal(function (mutations) {
mutations.forEach(function (mutation) {
if (mutation.attributeName == 'src' && gaUrl.test(mutation.target.src)) {
listen(mutation.target);
}
});
});
elem._observer.observe(elem, {
attributes: true,
childList: false,
characterData: false
});
} else if (elem.addEventListener) {
elem._DOMAttrModified = function (e) {
if (e.attrName == 'src' && gaUrl.test(e.target.src)) {
listen(e.target);
}
};
elem.addEventListener('DOMAttrModified', elem._DOMAttrModified);
} else if...