为了动态附加脚本,我们需要创建脚本元素并添加脚本元素的src属性,最后将脚本元素附加到head标记(或任何其他标记)中。但行为是同步的,页面被阻止,直到javascript完全加载。我想知道有没有可能的工作,我可以异步嵌入javascript而不使用xhr。
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'urlofthescript';
$("#someElement").append( script );
//the above line blocks the UI until it gets loaded. Why?
答案 0 :(得分:0)
<script src="...">
标记始终是同步的,除非您使用async
attribute。但是如果你插入<script>code goes here</script>
,执行就会毫不拖延地开始(只要你放弃JS线程)。因此,在字符串中构造代码或通过AJAX加载代码,然后将document.createTextNode(code)
,document.createElement('script')
,appendChild
代码加载到脚本中,然后编写脚本到文档中。另一种可能性是使用最近出现的一些优秀的模块系统,比如RequireJS,它可以为你找到所有这些。