Skip to content

Instantly share code, notes, and snippets.

@victornpb
Created October 16, 2019 19:17
Show Gist options
  • Save victornpb/dabf640c261b3495c79de831eee8fa3f to your computer and use it in GitHub Desktop.
Save victornpb/dabf640c261b3495c79de831eee8fa3f to your computer and use it in GitHub Desktop.
/**
* domReady for IE6+
* @param {Function} callback Callback
*
* @author http://beeker.io/jquery-document-ready-equivalent-vanilla-javascript
* @date 2016-10-04
*/
function domReady(callback) {
var ready = false;
var detach = function() {
if(document.addEventListener) {
document.removeEventListener("DOMContentLoaded", completed);
window.removeEventListener("load", completed);
} else {
document.detachEvent("onreadystatechange", completed);
window.detachEvent("onload", completed);
}
};
var completed = function() {
if(!ready && (document.addEventListener || event.type === "load" || document.readyState === "complete")) {
ready = true;
detach();
callback();
}
};
if(document.readyState === "complete") {
callback();
} else if(document.addEventListener) {
document.addEventListener("DOMContentLoaded", completed);
window.addEventListener("load", completed);
} else {
document.attachEvent("onreadystatechange", completed);
window.attachEvent("onload", completed);
var top = false;
try {
top = window.frameElement == null && document.documentElement;
} catch(e) {}
if(top && top.doScroll) {
(function scrollCheck() {
if(ready) return;
try {
top.doScroll("left");
} catch(e) {
return setTimeout(scrollCheck, 50);
}
ready = true;
detach();
callback();
})();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment