mirror of
https://bitbucket.org/bellord13/kit.git
synced 2026-11-13 19:06:11 +03:00
fix
This commit is contained in:
+22
-16
@@ -161,6 +161,7 @@ window.kit = window.kit || {};
|
||||
* @return {PluginManager}
|
||||
*/
|
||||
__proto.load = function (pluginId, callback) {
|
||||
var self = this;
|
||||
//console.log('PluginManager.load: plugin ' + pluginId + ' ('+(this.plugins[pluginId]?this.plugins[pluginId].state:'0')+')');
|
||||
if(typeof callback !== 'function') {
|
||||
callback = function(){};
|
||||
@@ -204,6 +205,7 @@ window.kit = window.kit || {};
|
||||
var getModulePromise = (function () {
|
||||
|
||||
function loadScript(src, resolveCallback, rejectCallback) {
|
||||
src = String(src).split('?')[0];
|
||||
if(typeof resolveCallback !== 'function'){
|
||||
resolveCallback = function(){};
|
||||
}
|
||||
@@ -213,16 +215,17 @@ window.kit = window.kit || {};
|
||||
};
|
||||
}
|
||||
return new Promise(function(resolve, reject) {
|
||||
var meta = document.querySelector('meta[name="'+src+'"]');
|
||||
var script = document.querySelector('script[src^="'+src+'"]');
|
||||
if (!script) {
|
||||
if (script || meta) {
|
||||
global.config.debug && console.warn(`Скрип ${src} уже загружен`);
|
||||
self.__ready(resolve, [script]);
|
||||
} else {
|
||||
script = document.createElement('script');
|
||||
script.src = '' + src + '?__pm' + (new Date()).getTime();
|
||||
script.onload = () => resolve(script);
|
||||
script.onerror = () => reject(new Error(`Ошибка загрузки скрипта ${src}`));
|
||||
document.head.append(script);
|
||||
} else {
|
||||
global.config.debug && console.warn(`Скрип ${src} уже загружен`);
|
||||
resolve(script);
|
||||
}
|
||||
}).then(resolveCallback, rejectCallback);
|
||||
}
|
||||
@@ -246,15 +249,16 @@ window.kit = window.kit || {};
|
||||
list.forEach(function(item, i, arr){
|
||||
syncPromise.then(function(){
|
||||
var src = configModule.path + item;
|
||||
var meta = document.querySelector('meta[name="'+src+'"]');
|
||||
var script = document.querySelector('script[src^="'+src+'"]');
|
||||
if (!script) {
|
||||
if(meta || script){
|
||||
self.__ready(resolve, [src, true]);
|
||||
} else {
|
||||
script = document.createElement('script');
|
||||
script.src = '' + src + '?__pm' + (new Date()).getTime();
|
||||
script.onload = () => checkResolve(src, true);
|
||||
script.onerror = () => checkResolve(src, false);
|
||||
document.head.append(script);
|
||||
} else {
|
||||
checkResolve(src, true);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -262,8 +266,12 @@ window.kit = window.kit || {};
|
||||
}
|
||||
function loadStyle(src) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var meta = document.querySelector('meta[name="'+src+'"]');
|
||||
var link = document.querySelector('link[href^="'+src+'"]');
|
||||
if (!link) {
|
||||
if(link || meta) {
|
||||
global.config.debug && console.warn(`Скрип ${src} уже загружен`);
|
||||
self.__ready(resolve, [src]);
|
||||
} else {
|
||||
link = document.createElement('link');
|
||||
link.rel = 'stylesheet';
|
||||
link.type = 'text/css';
|
||||
@@ -271,9 +279,6 @@ window.kit = window.kit || {};
|
||||
link.media = 'all';
|
||||
document.head.append(link);
|
||||
resolve(link);
|
||||
} else {
|
||||
global.config.debug && console.warn(`Скрип ${src} уже загружен`);
|
||||
resolve(link);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -563,14 +568,15 @@ window.kit = window.kit || {};
|
||||
callback = deps;
|
||||
deps = [];
|
||||
}
|
||||
this.__ready(this.exec, [deps, callback], this);
|
||||
};
|
||||
__proto.__ready = function(fn, args = [], context = window) {
|
||||
context = context || this;
|
||||
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);
|
||||
fn.apply(context, args);
|
||||
} else {
|
||||
// The document is not ready yet, so wait for the DOMContentLoaded event
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
this.exec(deps, callback);
|
||||
fn.apply(context, args);
|
||||
}.bind(this));
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user