var脚本=[ “//cdnjs.cloudflare.com/ajax/libs/less.js/1.3.3/less.min.js”, “//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars/min.js”, MK.host+“/templates/templates.js” ]; 函数loadScripts(脚本){ var script=scripts.shift(); var el=document.createElement('script'); el.src=脚本; el.onload=函数(脚本){ console.log(脚本+“已加载!”); if(scripts.length){ loadScripts(脚本); } 其他{ console.log(“运行应用程序”); MK.init(); } }; $body.append(el); } loadScripts(脚本);
-
访问:此链接: stackoverflow.com/questions/4845762/… 这是使用fuull – 吉特什 评论 2013年4月26日7:26
3个答案
el.onload=函数(){//。。。 el.src=脚本;
$body.append(el); el.onload=函数(){//。。。 el.src=脚本;
-
15 这实际上并不能解决问题。但如果我只使用 document.body.appendChild(el) 而不是$(“body”).append(el); 然后onload事件按预期触发。 – 香菜 评论 2013年4月26日7:37 -
50 -
15 @David为什么不将元素附加到最后,如建议的那样 html5rocks.com/en/tutorials/speed/script-loading ? 这将使您添加事件侦听器并设置 型钢混凝土 无关紧要。 – 斯图亚特·宾利 评论 2015年2月25日7:58 -
9 -
15
var script=document.createElement('script'); script.type=“text/javascript”; script.addEventListener(“加载”,函数(事件){ console.log(“已加载脚本:)”); onjqloaded();// 实际上,您的填充脚本()函数 }); script.src=“ https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js "; document.getElementsByTagName('head')[0].appendChild(script);
-
2
<script type=“text/javascript”> document.addEventListener(“DOMContentLoaded”,(event)=>{ 函数fn(src){ return new Promise(resolve=>{//Promise已启动 const script=document.createElement(“script”);// 创建<script>标记 //script.async=true不是必需的,因为使用了Promise script.onload=解析;// 承诺将解决加载事件 script.setAttribute(“src”,src);// 将设置srs=“链接到此处的源文件” document.getElementsByTagName('body')[0].appendChild(script);// 将创建的<script>标记附加到<body> }); } const url=[//脚本标记的顺序 “/script1.js”, “/script2.js”, “/script3.js” ]; Promise.resolve(fn(url[0]))//等待url[0得到解析,然后 .then(()=>fn(url[1]))//调用并等待url[1]解析,然后 .then(()=>fn(url[2]))//调用url[2] }); </script>
始终返回结果,否则回调将无法捕获前一个承诺的结果(使用箭头函数,()=>x是()=>{return x;}的缩写)
<body> <!-- 您的html--> <script src=“/script1.js”> <script src=“/script2.js”> <script src=“/script3.js”> </body>
编辑02.05.2024
<script type=“text/javascript”> (异步()=>{ 等待导入(“/script1.js”) 等待导入(“/script2.js”) 等待导入(“/script3.js”) })() </script>