Changeset 18499 for lang/javascript
- Timestamp:
- 08/31/08 00:34:43 (3 months ago)
- Location:
- lang/javascript/jsloader/trunk
- Files:
-
- 1 removed
- 2 modified
-
jsloader.js (modified) (5 diffs)
-
test.html (modified) (1 diff)
-
test/test.js (deleted)
Legend:
- Unmodified
- Added
- Removed
-
lang/javascript/jsloader/trunk/jsloader.js
r18148 r18499 1 var JSLoader = function(callback){ 1 var JSLoader = function(options){ 2 var options = options || {}; 2 3 this.pointer = 0; 3 this.callback = callback || function(){}; 4 this.finish = options.finish || function(){}; 5 this.append = options.append || null; 4 6 this.queue = { 5 7 length : 0, … … 17 19 next : function(){ 18 20 var self = this; 19 var loader = new JSLoader(function(){ 20 self._next(); 21 var loader = new JSLoader({ 22 append : self.append, 23 finish : function(){ 24 self._next(); 25 } 21 26 }); 22 27 var args = []; … … 41 46 switch(typeof arg){ 42 47 case 'string' : 43 this.queue.push(function(){self.load(arg)}); 48 this.queue.push(function(){self.load(arg,{ 49 append : self.append, 50 onload : function(){ 51 self.report(); 52 }}); 53 }); 44 54 break; 45 55 case 'function' : … … 52 62 this.queue.length--; 53 63 if(this.queue.length == 0){ 54 this. callback();64 this.finish(); 55 65 } 56 66 }, … … 66 76 }, 67 77 68 load : function(src){ 69 var self = this; 70 var script = document.createElement('script'); 71 script.type = 'text/javascript'; 72 script.src = src; 73 script.id = 'test'; 78 load : function(src, options){ 79 var options = options || {}; 80 var element = options.append || document.body || document.documentElement; 81 var script = document.createElement('script'); 82 script.src = src; 83 script.type = options.type || 'text/javascript'; 84 script.onload = options.onload || function(){}; 85 if(options.charset) 86 script.charset = options.charset; 74 87 if( document.all ){ 75 script.onreadystatechange = function(){if(script.readyState == 'complete') self.report(); }; 76 }else{ 77 script.onload = function(){self.report()}; 88 script.onreadystatechange = function(){ 89 switch(script.readyState){ 90 case 'complete': 91 case 'loaded' : 92 script.onload(); 93 break; 94 } 95 }; 78 96 } 79 (document.body || document.documentElement).appendChild(script);97 element.appendChild(script); 80 98 } 81 99 }; -
lang/javascript/jsloader/trunk/test.html
r18148 r18499 7 7 <title>JSLoader test</title> 8 8 <script type="text/javascript" src="jsloader.js"></script> 9 <script type="text/javascript" src="test/test.js"></script>10 9 </head> 11 10 <body> 11 <button onclick="test();">run</button> 12 12 <div id="code"></div> 13 <button onclick="test();">run</button> 13 <script type="text/javascript"> 14 function test(){ 15 var ele = document.getElementById('code'); 16 new JSLoader({ 17 append : ele, 18 finish : function(){ 19 status('end script'); 20 } 21 }) 22 .next('http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load1.js') 23 .next(function(){ 24 status('loaded load1'); 25 }) 26 .next('http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load2.js', 27 function(){ 28 status('loading load2 and load3'); 29 }, 30 'http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load3.js') 31 .next(function(){ 32 status('loaded load2 and load3'); 33 }) 34 .next('http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load4.js', 35 'http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load5.js', 36 'http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load6.js' ) 37 .next(function(){ 38 status('loaded load4 and load5 and load6'); 39 }) 40 .next('http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load7.js', 41 'http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load8.js') 42 .next(function(){ 43 status('loaded load7 and load8'); 44 }) 45 .next('http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load9.js', 46 'http://svn.coderepos.org/share/lang/javascript/jsloader/trunk/test/script/load10.js') 47 .next(function(){ 48 status('loaded load9 and load10'); 49 }) 50 .start(); 51 } 52 53 function status(mes){ 54 var ele = document.getElementById('code'); 55 ele.innerHTML = ele.innerHTML+'<p>'+mes+"<p>"; 56 var loadStatus = ''; 57 for(var i=1,l=10; i<=10; i++){ 58 var val = 'load'+i; 59 var status = ''; 60 if(window[val]){ 61 status = 'loaded'; 62 }else{ 63 status = 'undefined'; 64 } 65 loadStatus += '<li>'+val+':'+status+'</li>' 66 } 67 ele.innerHTML = ele.innerHTML+'<ul>'+loadStatus+'</ul>'; 68 } 69 </script> 14 70 15 71 </body>
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)