Skip to content

Instantly share code, notes, and snippets.

@myaumyau
Created December 20, 2011 03:26
Show Gist options
  • Save myaumyau/1500097 to your computer and use it in GitHub Desktop.
Save myaumyau/1500097 to your computer and use it in GitHub Desktop.
[js]domready.js
(function(namespace){
// local symbol
var _doc = document, _win = window, _ns = _win;
if (namespace) {
var nsArr = namespace.split('.');
for (var i = 0, l = nsArr.length; i < l; i++) {
var ns = nsArr[i];
if (typeof(_ns[ns]) == 'undefined') _ns[ns] = {};
_ns = _ns[ns];
}
}
var _domReady = {};
var isReady = false,
bound = false,
fnList = [];
_domReady.fire = function() {
if(isReady) return;
isReady = true;
if (fnList) {
for(var i = 0, l = fnList.length; i < l; i++) {
fnList[i].call(_win, []);
}
fnList = [];
}
};
_domReady.bindReady = function() {
if (bound) return;
bound = true;
if (_doc.readyState === 'complete' ) {
setTimeout(_domReady.ready, 1);
return;
}
if (_doc.addEventListener) {
_doc.addEventListener('DOMContentLoaded', _domReady.fire, false);
} else if (_doc.attachEvent) {
(function(){
if (isReady) return;
try {
_doc.documentElement.doScroll('left');
} catch(error) {
setTimeout(arguments.callee, 0);
return;
}
_domReady.fire();
})();
} else {
var baseLoad = _win.onload;
_win.onload = function() {
if (baseLoad) {
baseLoad();
}
_domReady.fire();
};
}
};
_domReady.ready = function(fn) {
_domReady.bindReady();
if (isReady) {
fn.call(_win, []);
} else {
fnList.push(function() { return fn.call(_win, []); });
}
};
//_domReady.bindReady();
_ns.ready = _domReady.ready;
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment