我的任务:如果我包含一个javascript文件(vlib.js),它应该自动将所有支持的JS lib包含在登陆文档中。
我做了什么:我有一个字符串数组,其中包含要追加的所有JS文件路径列表。我在Vlib.js中声明了一个函数作为全局函数。它正确地附加了所有文件,但问题是我遇到了一些错误!
附加开始于一些库文件,如angular.min,... jquery.min .. bootstrap ..和我的自定义JS文件。即使我以正确的顺序附加它们,我也会收到错误,例如角度未定义,以及其他错误,如果以正确的顺序加载则不应该出现错误。我的队友说,即使按正确的顺序排列它也可能像angular.min之前加载的角度相关文件一样随机加载。那么有什么方法可以加载一个脚本,然后继续只在加载第一个脚本时附加到其他js?我必须使用原生JS。
我正在使用此代码
function populateJsDynamicX() {
for (var index = 0; index < jsSet.length; index++) {
source = jsSet[index];
if (jsSet[index].includes('.js')) {
console.log(source);
var scriptTag = document.createElement('script'), // create a script tag
firstScriptTag = document.getElementById('viewerHandle'); // find the first script tag in the document
scriptTag.src = source; // set the source of the script to your script
scriptTag.type = "text/javascript";
//firstScriptTag.parentNode.insertBefore(scriptTag, firstScriptTag); // append the script to the DOM
document.head.appendChild(scriptTag);
(document, 'script');
} else {
console.log(source);
var scriptTag = document.createElement('link'), // create a script tag
firstScriptTag = document.getElementById('viewerHandle'); // find the first script tag in the document
scriptTag.href = source; // set the source of the script to your script
scriptTag.type = "text/css";
scriptTag.rel = "stylesheet";
//firstScriptTag.parentNode.insertBefore(scriptTag, firstScriptTag); // append the script to the DOM
document.head.appendChild(scriptTag);
(document, 'script');
}
}
console.log(jsSet.length);
}
其他一些人说$.getScript
将完成工作,但我想通过本地JS做到这一点,你能告诉我哪里错了吗?
我得到这样的错误: