1. 程式人生 > >JS指令碼按順序依次載入執行

JS指令碼按順序依次載入執行

今天同事遇到一個需求,就是需要動態載入的指令碼按順序依次載入執行。嘗試了使用document.write(DOMContentLoaded之後不能使用該方法,且該方法不推薦使用),使用defer=“async”(部分瀏覽器比較古老,不支援該屬性)。最後我寫了一個方法,實現指令碼的按順序載入,程式碼如下:

function loadScript(){
	var scriptArr =  Array.prototype.slice.apply(arguments);
	var script = document.createElement('script');
	script.type = 'text/javascript'; 
	
	var rest = scriptArr.slice(1);

	if(rest.length > 0){
		script.onload = script.onreadystatechange = function() { 
			if ( !this.readyState || this.readyState === "loaded" || 
			this.readyState === "complete" ) { 
				loadScript.apply(null, rest); 
				// Handle memory leak in IE 
				script.onload = script.onreadystatechange = null; 
			} 
		}; 	
	}					

	script.src = scriptArr[0];
	document.body.appendChild(script);
}	
loadScript('1.js','2.js','3.js');

該方法相容IE喲!!!