This commit is contained in:
2021-08-20 19:24:48 +03:00
parent ed40f5e0f2
commit 07c164357a
4 changed files with 94 additions and 31 deletions
+25 -4
View File
@@ -462,14 +462,17 @@ window.kit = window.kit || {};
return module.exports;
};
__proto.exec = function (deps, callback, argArr = []) {
__proto.exec = function (deps, callback, argArr = [], context = undefined) {
if(typeof deps === 'function') {
context = argArr;
argArr = callback;
callback = deps;
deps = [];
}
if(context === undefined) {
context = this;
}
if(!Array.isArray(deps) ) {
deps = [deps];
}
@@ -497,10 +500,10 @@ window.kit = window.kit || {};
if(depsPromise) {
depsPromise.then(function(){
callback.apply(this, getArgArr());
callback.apply(context, getArgArr());
});
} else {
callback.apply(this, getArgArr())
callback.apply(context, getArgArr())
}
};
@@ -545,6 +548,23 @@ window.kit = window.kit || {};
};
__proto.ready = function(deps, callback) {
if(typeof deps === 'function') {
callback = deps;
deps = [];
}
if (/complete|interactive|loaded/.test(document.readyState)) {
// In case the document has finished parsing, document's readyState will
// be one of "complete", "interactive" or (non-standard) "loaded".
this.exec(deps, callback);
} else {
// The document is not ready yet, so wait for the DOMContentLoaded event
document.addEventListener("DOMContentLoaded", function () {
this.exec(deps, callback);
}.bind(this));
}
};
__proto.__getPlugin = function (pluginId) {
if(this.plugins.hasOwnProperty(pluginId)) {
return this.plugins[pluginId];
@@ -582,6 +602,7 @@ window.kit = window.kit || {};
manager.install('config');
global.PluginManager = manager;
global.ready = manager.ready.bind(manager);
global.exec = manager.exec.bind(manager);
global.require = manager.require.bind(manager);
})(kit || window);