emile
Version:
no-thrills stand-alone CSS animation JavaScript framework
52 lines (46 loc) • 1.3 kB
JavaScript
!function (doc) {
var loaded = 0, fns = [], ol, f = false,
testEl = doc.createElement('a'),
domContentLoaded = 'DOMContentLoaded',
addEventListener = 'addEventListener',
onreadystatechange = 'onreadystatechange';
function flush() {
loaded = 1;
for (var i = 0, l = fns.length; i < l; i++) {
fns[i]();
}
}
doc[addEventListener] && doc[addEventListener](domContentLoaded, function fn() {
doc.removeEventListener(domContentLoaded, fn, f);
flush();
}, f);
testEl.doScroll && doc.attachEvent(onreadystatechange, (ol = function ol() {
if (/^c/.test(doc.readyState)) {
doc.detachEvent(onreadystatechange, ol);
flush();
}
}));
var domReady = testEl.doScroll ?
function (fn) {
self != top ?
!loaded ?
fns.push(fn) :
fn() :
!function () {
try {
testEl.doScroll('left');
} catch (e) {
return setTimeout(function() {
domReady(fn);
}, 50);
}
fn();
}();
} :
function (fn) {
loaded ? fn() : fns.push(fn);
};
(typeof module !== 'undefined') && module.exports ?
(module.exports = {domReady: domReady}) :
(window.domReady = domReady);
}(document);