是否通过顺序或并行执行appendChild()动态添加脚本?

时间:2015-03-29 21:29:14

标签: javascript

我使用与此类似的代码动态地向页面添加脚本:

var s = document.createElement('script');
s.src = 'script.js';
(document.head||document.documentElement).appendChild(s);

我添加的第一个脚本是jQuery与之后的一些插件捆绑在一起(所有在一个JS文件中),然后第二个脚本使用jQuery和添加的第一个JS文件中创建的一些其他对象。

问题是在第二个脚本中抛出错误,说jQuery以及其他一些东西是未定义的。

我假设以这种方式添加到DOM的脚本将按顺序解析/执行,但这些错误表明它们是并行执行的。

这是什么?

1 个答案:

答案 0 :(得分:1)

基本上你会被建议使用一个库来处理这个问题,但我并不是图书馆的忠实粉丝,因为他们经常提供比你需要的更多的东西,但这不一定是坏事。

要加载脚本,您需要绑定第二个脚本,以便在第一个加载完成后加载。

var script1 = document.createElement('script');
script1.onload = function() {
    // script 1 has loaded
    var script2 = document.createElement('script');
    document.head.appendChild(script2);
    script2.src = "...";
}

document.head.appendChild(script1);
script1.src = "...";