|
2 | 2 | $js - asynchronous module definition framework
|
3 | 3 | or just simple lightweight javascript dependencies manager
|
4 | 4 |
|
5 |
| - @version 4.6 |
| 5 | + @version 4.7 |
6 | 6 | @link http://github.com/redcatphp/js/
|
7 | 7 | @author Jo Surikat <jo@surikat.pro>
|
8 | 8 | @website http://redcatphp.com
|
|
75 | 75 | var relative = u.indexOf('//')<0&&u.substr(0,2)!='./';
|
76 | 76 | return ($js.cdn&&relative?$js.cdn:'')+(u.indexOf('/')!==0?($js.path&&relative&&(!$js.pathDetection||u.indexOf($js.path)!=0)?($js.path+u):u)+($js.pathSuffix&&relative&&(!$js.pathDetection||u.substr(u.length-$js.pathSuffix.length)!=$js.pathSuffix)?$js.pathSuffix:''):u);
|
77 | 77 | };
|
78 |
| - var createScript = function(u){ |
79 |
| - var s = d.createElement('script'); |
80 |
| - d.type = 'text/javascript'; |
81 |
| - d.body.appendChild(s); |
| 78 | + var makeSrcCallback = function(u){ |
82 | 79 | var realcallback = function(){
|
83 | 80 | var shift = $js.modulesStack.shift();
|
84 | 81 | if(shift)
|
|
97 | 94 | realcallback();
|
98 | 95 | }
|
99 | 96 | };
|
| 97 | + return callback; |
| 98 | + }; |
| 99 | + var createScript = function(u){ |
| 100 | + var callback = makeSrcCallback(u); |
| 101 | + var s = d.createElement('script'); |
| 102 | + d.type = 'text/javascript'; |
| 103 | + d.body.appendChild(s); |
100 | 104 | s.onload = callback;
|
101 | 105 | s.onreadystatechange = function(){if(callback&&this.readyState==='loaded'){callback();}}; //old browsers
|
102 | 106 | s.setAttribute('async','async');
|
103 | 107 | s.src = cacheFix(u,$js.dev,$js.min,'js',$js.cdn);
|
104 | 108 | };
|
| 109 | + var resolve = function(u, c){ |
| 110 | + if(typeof(c)=='function') c(); |
| 111 | + u = getSrc(u); |
| 112 | + if(!requiring[u]){ |
| 113 | + requiring[u] = []; |
| 114 | + makeSrcCallback(u)(); |
| 115 | + } |
| 116 | + if(handled.indexOf(u)>-1) |
| 117 | + handle(u); |
| 118 | + else if(required.indexOf(u)>-1) |
| 119 | + wait(u); |
| 120 | + }; |
105 | 121 | var x = function(u,c){
|
106 | 122 | if(!u){
|
107 | 123 | if(typeof(c)=='function')
|
|
772 | 788 | }
|
773 | 789 | };
|
774 | 790 | };
|
| 791 | + js.resolve = resolve; |
775 | 792 | return js;
|
776 | 793 | })();
|
777 | 794 |
|
|
0 commit comments