轉自: http://www.tkk7.com/emu/archive/2005/06/20/6365.html?1 <html><head><title>emu?--?用fason的參數化定時器模擬多線程</title></head><body> ?2  <SCRIPT?LANGUAGE="JavaScript"> ?3 <!-- ?4  ?5 var?_st?=?window.setTimeout; ?6  window.setTimeout?=?function(fRef,?mDelay)? { ?7  ????if(typeof?fRef?==?'function') { ?8 ????????var?argu?=?Array.prototype.slice.call(arguments,2); ?9  ????????var?f?=?(function() {?fRef.apply(null,?argu);?}); 10 ????????return?_st(f,?mDelay); 11 ????} 12 ????return?_st(fRef,mDelay); 13 } 14 15 var?_int?=?window.setInterval; 16 window.setInterval?=?function(fRef,?mDelay)? { 17 ????if(typeof?fRef?==?'function') { 18 ????????var?argu?=?Array.prototype.slice.call(arguments,2); 19 ????????var?f?=?(function() {?fRef.apply(null,?argu);?}); 20 ????????return?_int(f,?mDelay); 21 ????} 22 ????return?_st(fRef,mDelay); 23 } 24 25 26 function?startNewTask() { 27 ????var?target?=?document.getElementById("sampleResult").cloneNode(true); 28 ????with?(target) { 29 ????id="";style.display="block";style.color=(Math.floor(Math.random()*?(1<<23)).toString(16)+"00000").substring(0,6); 30 ????} 31 ????document.body.insertBefore(target,document.body.lastChild); 32 ????var?parameter?=? {target:target,n:0,result:0} 33 ????parameter.timer?=?setInterval(count,1,parameter); 34 } 35 36 function??count(parameter) { 37 ????with?(parameter) { 38 ????????if?(!target.stop) { 39 ????????????for(var?i=0;i<speed;i++) 40 ????????????????if?(n<MAX)?result?+=?++n; 41 ????????????target.innerHTML?=?result; 42 ????????} 43 ????????if?(n>=MAX) { 44 ????????????clearInterval(timer); 45 ????????????setTimeout(function(elm) {document.body.removeChild(elm)},2000,target); 46 ????????} 47 ????} 48 } 49 50 var?speed?=?1111; 51 var?MAX=100000; 52 //--> 53 </SCRIPT> 54 <button?onclick="startNewTask()">開始新線程</button> 55 56 <BR><BR> 57 <div?id=sampleResult?onmouseover="this.stop=true"?onmouseout="this.stop=false"?style="display:none;cursor:hand">0</div> 58 </body> 59 </html>
|