我遇到了类似的问题,但我认为我对此有一个小变化:我有一个我希望能够加载的文件列表,但有些依赖于彼此所以他们加载 - 或实际解析和执行 - 的顺序很重要。
我现在拥有的简化代码:
function loadscripts() {
for (var i=0; i<list.length; i++) {
var scriptElem = document.createElement("script");
scriptElem.src = list[i];
$("body").append(scriptElem);
}
var list ["script1.js","script2.js"];
loadscripts();
我认为,因为我基本上是在向DOM中添加标签,所以浏览器会按顺序解析它们,就像它们在“静态”中那样。 html文件。但事实证明它并没有。
例如,我加载hammerjs及其jquery hammer插件。这些是单独的文件,所以我按顺序将它们添加到dom中,但是当在hammerjs之前解析时,jquery hammer插件有时会抛出错误(Hammer未定义)。
所以这样的事情是不安全的:
// script1.js
var someObject = {
value1:1, value2:2
}
// script2.js
console.log(someObject.value1);
这会(有时!)抛出错误,例如&#34;无法访问&#39; value1&#39;未定义&#34;。
我可以像在SO上指出的类似问题及其答案一样,使用script.onload但由于我想要加载多个文件,需要跟踪加载哪个文件,再次调用loadScript函数并添加下一个,依此类推。那会有点混乱。
有没有人知道一个尽可能干净的解决方案?
相关问题: