用手动创建新的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: