-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathassets.js
73 lines (52 loc) · 1.97 KB
/
assets.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
;(function($, win){
win.Assets = {
_ress: {},
require: function(ress, callback, failcallback) {
var req = [],
ress = $.isArray(ress) ? ress:[ress];
for (var i=0, len=ress.length; i<len; i++) {
if(!ress[i]) continue;
if (!this._ress[ress[i]]) {
if (ress[i].match(/\.js$/)) {
this._ress[ress[i]] = this.getScript(ress[i]);
} else {
this._ress[ress[i]] = this.getCss(ress[i]);
}
}
req.push(this._ress[ress[i]]);
}
return $.when.apply($, req).done(callback).fail(function(){
failcallback ? failcallback() : $.error("Require failed: \n"+ress.join(",\n"));
});
},
getScript: function(url, callback) {
var d = $.Deferred(), script = document.createElement('script');
script.async = true;
script.onload = function() {
d.resolve();
if(callback) { callback(script); }
};
script.onerror = function() {
d.reject(url);
};
script.src = url;
document.getElementsByTagName('head')[0].appendChild(script);
return d.promise();
},
getCss: function(url, callback){
var d = $.Deferred(),
link = document.createElement('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.href = url;
document.getElementsByTagName('head')[0].appendChild(link);
var img = document.createElement('img');
img.onerror = function(){
d.resolve();
if(callback) callback(link);
};
img.src = url;
return d.promise();
}
};
})(jQuery, window);