如何在动态加载javascript文件后添加回调

时间:2014-09-06 14:04:21

标签: javascript

我有以下功能:

function require(url)
{
    var e = document.createElement("script");
    e.src = url;
    e.type="text/javascript";
    document.getElementsByTagName("head")[0].appendChild(e);
}

允许在运行时动态加载javascript,我需要在加载一些新文件后添加回调

例如,当我

require('className.js');

就在这个电话之后

var a = new window[className];

文件尚未加载,因此会生成错误。

2 个答案:

答案 0 :(得分:5)

你可以在脚本元素上添加一个onLoad,但要注意在某些旧版本的IE上有点错误。

将您的代码作为参考:

function require(url, callback) 
{
  var e = document.createElement("script");
  e.src = url;
  e.type="text/javascript";
  e.addEventListener('load', callback);
  document.getElementsByTagName("head")[0].appendChild(e);
}

require("some.js", function() { 
   // Do this and that
});

答案 1 :(得分:1)

除了Simone Gianni的回答之外,如果你想加载一组js文件,再加上最后运行一个回调,你要确保所有文件都已加载,你可以按如下方式递归执行:< / p>

function loadList(list, i, callback)
        {
            require(list[i], function()
            {
                if(i < list.length-1)
                {
                    loadList(list, i+1, callback);  
                }
                else
                {
                    callback();
                }
            });
        }

致电:

    loadList(jsList, 0, function()
    {
        // code that applies after all URLs in jsList have loaded
    });