动态脚本标记添加是异步的?

时间:2009-09-29 10:14:16

标签: javascript javascript-events

动态脚本标记添加是否异步?就像动态地包含来自不同域的一组JavaScript文件一样..

2 个答案:

答案 0 :(得分:8)

是的,它是异步的。动态<script>注入总是导致浏览器通过DOM加载外部资源(例如,就像样式表,图像,闪存),这必须异步发生以避免浏览器锁定。

您是否有机会查看JSONP(“填充JSON”)?它使用动态脚本标记注入。关于“AJAX”的讨论越来越多,而且无法进行同步JSONP(如同步XmlHttpRequest)的事实经常被忽视。

答案 1 :(得分:0)

  

动态脚本标记添加是否异步?

是。它被认为是异步的,主要是因为脚本标记没有动态插入时会发生什么。

DOM中存在的完全形成的脚本标记将导致阻止行为,即在该特定资产加载完成之前,页面无法继续加载其他HTML。因此,许多开发人员更喜欢将他们的脚本标记放在</body>标记之前。这样,标签就会被称为synchronous

相比之下,如果动态注入脚本标记,则往往不会出现阻塞行为。我说趋势因为正如你在其他评论中看到的那样,并非所有浏览器都这样做。最好的方法是将动态脚本代码包装在某种document ready回调中。因此,相比之下,它在技术上是asynchronous,因为其他资产可以继续与该资产及其功能一起运作。