用手動創建新的script標籤的方式,實現JavaScript腳本的異步加載

  • 2020 年 3 月 18 日
  • 筆記

代碼第四行里新建一個script標籤頁,在第8行的回調函數onreadystatechange里,根據屬性readyState判斷當前標籤頁的狀態,如果為loaded或者complete,說明腳本加載成功,此時觸髮腳本加載人員指定的回調函數。

該加載器的完整代碼實現如下:

<html>  <script>  function loadScript(url, callback){  	var script = document.createElement ("script") ;   	script.type = "text/javascript";        if (script.readyState){ //IE  		script.onreadystatechange = function(){  			if (script.readyState == "loaded" || script.readyState == "complete"){   				script.onreadystatechange = null;  				callback();              } // end of readyState          }; // end of onreadystatechange      } // end of IE      else {          script.onload = function(){          	callback();      	};  	}  	script.src = url;  	document.getElementsByTagName("head")[0].appendChild(script);  }    loadScript("026_test.js", function(){  	console.log("File is loaded!");  	hello();  });  </script>  </html>

新建一個測試腳本文件,命名為test.js:

function hello() {  	console.log("hello world");  }

使用下列代碼加載該腳本,加載成功後,回調函數打印出File is loaded的消息,同時被加載腳本test.js里的函數hello被調用,打印出hello world: