如何确保正确加载动态JavaScript文件?

时间:2010-02-23 19:51:09

标签: javascript file dynamic load onload

我有一个应用程序,其中生成的HTML页面指定单个JavaScript文件:

<script language="JavaScript" src="/global.js"></script>

global.js中是以下代码,用于加载单个用户定义的user.js文件:

var UserJsFile = document.createElement("script");
UserJsFile.type = "text/javascript";
UserJsFile.src = "/user.js";
document.getElementsByTagName("head")[0].appendChild(UserJsFile);

// Add default onLoad handler
window.onload = global_onLoad;

// Global onLoad function
function global_onLoad(){
    submitdisabled = false;
    user_onLoad();
    document.forms[0].onsubmit = global_onSubmit;
}

user.js中的代码类似,允许用户指定多个用户定义的JS文件:

// Define all user-defined JavaScript sub-files
var UserJsFiles = [];
UserJsFiles[0] = "install.js";
UserJsFiles[1] = "complex.js";
UserJsFiles[2] = "gravis.js";
UserJsFiles[3] = "locator.js";
UserJsFiles[4] = "locator_x.js";

// Load all the user-defined JavaScript sub-files
for (i=0; i<UserJsFiles.length; i++) {
    var UserJsFile = document.createElement("script");
    UserJsFile.type = "text/javascript";
    UserJsFile.src = UserJsFiles[i];
    document.getElementsByTagName("head")[0].appendChild(UserJsFile);
}
// Perform any user-defined onLoad functionality
function user_onLoad() {
    // user code goes here
    return;
}

我得到的问题是,一旦global.js中的代码运行(附加user.js),页面似乎认为它已加载(即使并非所有用户定义的JS文件都已附加/因此它运行global_onLoad(),因为它调用了user_onLoad(),它可以在其他一些文件中调用用户定义的onLoad函数...

至少,这就是我认为正在发生的事情......

我错过了什么 - 将每个用户定义的JS文件附加为异步发生的DOM元素?

请注意,我的用户不能使用JQuery或任何其他JS框架,所以如果我确实有问题,我需要使用简单的JS来解决它......

0 个答案:

没有答案