devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
40 lines (39 loc) • 1.26 kB
JavaScript
/**
* DevExtreme (core/utils/ready_callbacks.js)
* Version: 18.1.3
* Build date: Tue May 15 2018
*
* Copyright (c) 2012 - 2018 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
var domAdapter = require("../dom_adapter");
var windowUtils = require("./window");
var callOnce = require("./call_once");
var callbacks = [];
var isReady = function() {
return "complete" === domAdapter.getReadyState() || "loading" !== domAdapter.getReadyState() && !domAdapter.getDocumentElement().doScroll
};
var subscribeReady = callOnce(function() {
var removeListener = domAdapter.listen(domAdapter.getDocument(), "DOMContentLoaded", function() {
readyCallbacks.fire();
removeListener()
})
});
var readyCallbacks = {
add: function(callback) {
var hasWindow = windowUtils.hasWindow();
if (hasWindow && isReady()) {
callback()
} else {
callbacks.push(callback);
hasWindow && subscribeReady()
}
},
fire: function() {
callbacks.forEach(function(callback) {
callback()
})
}
};
module.exports = readyCallbacks;