我有一个应用程序,其中生成的 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;
}
和 inuser.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 解决...