我有以下功能:
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];
文件尚未加载,因此会生成错误。
答案 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
});