今天同事遇到一个需求,就是需要动态加载的脚本按顺序依次加载执行。尝试了使用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哟!!!