我使用与此类似的代码动态地向页面添加脚本:
var s = document.createElement('script');
s.src = 'script.js';
(document.head||document.documentElement).appendChild(s);
我添加的第一个脚本是jQuery与之后的一些插件捆绑在一起(所有在一个JS文件中),然后第二个脚本使用jQuery和添加的第一个JS文件中创建的一些其他对象。
问题是在第二个脚本中抛出错误,说jQuery以及其他一些东西是未定义的。
我假设以这种方式添加到DOM的脚本将按顺序解析/执行,但这些错误表明它们是并行执行的。
这是什么?
答案 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 = "...";