(function (root, factory) { if (typeof define === "function" && define.amd) { define("onDomReady", factory(root)); } else if (typeof exports === "object") { module.onDomReady = factory(root); } else { root.onDomReady = factory(root); } })(this, function (root) { "use strict"; var win = window, doc = win.document, docElem = doc.documentElement, LOAD = "load", FALSE = false, ONLOAD = "on"+LOAD, COMPLETE = "complete", READYSTATE = "readyState", ATTACHEVENT = "attachEvent", DETACHEVENT = "detachEvent", ADDEVENTLISTENER = "addEventListener", DOMCONTENTLOADED = "DOMContentLoaded", ONREADYSTATECHANGE = "onreadystatechange", REMOVEEVENTLISTENER = "removeEventListener", isEventListener = ADDEVENTLISTENER in doc, isDomReady = FALSE, domReadyCallBacks = []; var exports = function (func) { function defer (func, wait) { setTimeout(func, +wait >= 0 ? wait : 1); } function ready (func) { if (!isDomReady) { if (!doc.body) { return defer(ready); } isDomReady = true; while (func = domReadyCallBacks.shift()) { defer(func); } } } function detach() { if (isEventListener) { doc[REMOVEEVENTLISTENER](DOMCONTENTLOADED, completed, FALSE); win[REMOVEEVENTLISTENER](LOAD, completed, FALSE); } else { doc[DETACHEVENT](ONREADYSTATECHANGE, completed); win[DETACHEVENT](ONLOAD, completed); } } function completed (event) { if (isEventListener || event.type === LOAD || doc[READYSTATE] === COMPLETE) { detach(); ready(); } } if (doc[READYSTATE] === COMPLETE) { defer(ready); } else if (isEventListener) { doc[ADDEVENTLISTENER](DOMCONTENTLOADED, completed, FALSE); win[ADDEVENTLISTENER](LOAD, completed, FALSE); } else { doc[ATTACHEVENT](ONREADYSTATECHANGE, completed); win[ATTACHEVENT](ONLOAD, completed ); } isDomReady ? defer(func) : domReadyCallBacks.push(func); }; return exports; }); // An example of the use of function onDomReady. onDomReady(function(){ console.log("DOM IS READY"); });
Preview:
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