devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
38 lines (32 loc) • 1.09 kB
JavaScript
var domAdapter = require("../dom_adapter");
var windowUtils = require("./window");
var callOnce = require("./call_once");
var callbacks = [];
var isReady = function isReady() {
// NOTE: we can't use document.readyState === "interactive" because of ie9/ie10 support
return domAdapter.getReadyState() === "complete" || domAdapter.getReadyState() !== "loading" && !domAdapter.getDocumentElement().doScroll;
};
var subscribeReady = callOnce(function () {
var removeListener = domAdapter.listen(domAdapter.getDocument(), "DOMContentLoaded", function () {
readyCallbacks.fire();
removeListener();
});
});
var readyCallbacks = {
add: function add(callback) {
var hasWindow = windowUtils.hasWindow();
if (hasWindow && isReady()) {
callback();
} else {
callbacks.push(callback);
hasWindow && subscribeReady();
}
},
fire: function fire() {
callbacks.forEach(function (callback) {
callback();
});
}
};
module.exports = readyCallbacks;
;