Skip to content

Instantly share code, notes, and snippets.

@englishextra
Created September 18, 2016 23:56
Show Gist options
  • Save englishextra/7c22a9a9cae3320318e9c9eab6777c84 to your computer and use it in GitHub Desktop.
Save englishextra/7c22a9a9cae3320318e9c9eab6777c84 to your computer and use it in GitHub Desktop.
Plain javascript replacement for jQuery's .ready()
/*!
* Plain javascript replacement for jQuery's .ready()
* so code can be scheduled to run when the document is ready
* github.com/jfriend00/docReady
* gist.github.com/englishextra/7c22a9a9cae3320318e9c9eab6777c84
* docReady(function(){});
* simple substitute by Christoph at stackoverflow.com/questions/8100576/how-to-check-if-dom-is-ready-without-a-framework
* (function(){var a=document.readyState;"interactive"===a||"complete"===a?(function(){}()):setTimeout(arguments.callee,100)})();
*/
(function(funcName,baseObj){"use strict";funcName=funcName||"docReady";baseObj=baseObj||window;var readyList=[];var readyFired=false;var readyEventHandlersInstalled=false;function ready(){if(!readyFired){readyFired=true;for(var i=0;i<readyList.length;i++){readyList[i].fn.call(window,readyList[i].ctx);}readyList=[];}}function readyStateChange(){if(document.readyState==="complete"){ready();}}baseObj[funcName]=function(callback,context){if(readyFired){setTimeout(function(){callback(context);},1);return;}else{readyList.push({fn:callback,ctx:context});}if(document.readyState==="complete"||(!document.attachEvent&&document.readyState==="interactive")){setTimeout(ready,1);}else if(!readyEventHandlersInstalled){if(document.addEventListener){document.addEventListener("DOMContentLoaded",ready,false);window.addEventListener("load",ready,false);}else{document.attachEvent("onreadystatechange",readyStateChange);window.attachEvent("onload",ready);}readyEventHandlersInstalled=true;}}})("docReady",window);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment