1

生成された 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 ファイルがアタッチ/ロードされていなくても)、これは、他のいくつかのファイルでユーザー定義の onLoad 関数を呼び出す可能性があるglobal_onLoad()ため、失敗します...user_onLoad()

少なくとも、それが起こっていると思います...

何か不足していますか? ユーザー定義の各 JS ファイルを DOM 要素として非同期にアタッチしていますか?

ユーザーは JQuery やその他の JS フレームワークを使用できないことに注意してください。問題が発生した場合は、単純な JS を使用して解決する必要があります...

4

0 に答える 0