0

順番にロードする必要のあるJavaScriptファイルがたくさんあります。ただし、そのうちの1つはie7に読み込まれていません。

ロードを行う関数は次のとおりです。

function loadScript(url, callback){
    var head = document.getElementsByTagName("head")[0];
    var script = document.createElement("script");
    script.src = url;

    // Attach handlers for all browsers
    var done = false;
    script.onload = script.onreadystatechange = function()
    {
            if( !done && ( !this.readyState 
                                    || this.readyState == "loaded" 
                                    || this.readyState == "complete") )
            {
                    done = true;

                    // Continue your code
                    callback();

                    // Handle memory leak in IE
                    script.onload = script.onreadystatechange = null;
                    head.removeChild( script );
            }
    };

    head.appendChild(script);
}

そして、関数は次を呼び出します。

loadScript('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js',function(){
    loadScript('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js',function(){
        loadScript('http://XXX/js/data.php?rand='+Math.random(),function(){
            loadScript('http://XXX/js/jquery.inject.js?rand='+Math.random(),function(){
                console.log('a');
                loadScript('XXX/js/press.js?rand='+Math.random(),function(){
                    console.log('b');
                    inject_press();
                });

            });
        });
    });
});

i jquery.inject.jsをロードしないファイル、whosコードは

console.log('y');

jQuery.prototype.inject = function(a){
    ...
}

繰り返しますが、これはie7を除くすべてのブラウザで機能します。出力は

a
b
4

1 に答える 1

0

これは、ECMAscript ファイルをロードする最良の方法ではありません。そのファイルに名前を付けてソートし、ASP.NET 4.5 バンドルを使用してロードします。

于 2012-06-25T14:59:05.297 に答える