需要通过另一个javascript文件动态加载Javascript lib和支持文件

时间:2017-12-01 18:22:55

标签: javascript html angular

我的任务:如果我包含一个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做到这一点,你能告诉我哪里错了吗?

我得到这样的错误:

JavaScrip Error

0 个答案:

没有答案