1

重複の可能性:

私はこのようにjQueryを含めました:

function loadScript(loc){
  var head = document.getElementsByTagName('head')[0];
  var file = document.createElement('script');
  file.src = loc;
  file.type = "text/javascript";
  head.appendChild(file)
}

loadScript("js/jquery.js")

これで、次のスクリプトが同じ方法でロードされるはずです。しかし、最終行以降に読み込まれると、読み込みが完了していない可能性があるため、jQuery を使用できません。では、jQuery の読み込みが完了したかどうかを確認するにはどうすればよいでしょうか。このようなことはできますか?:

while (typeof jQuery == 'undefined')
  {
  wait...
  }
4

3 に答える 3

8

スクリプトを動的にロードするための一般的に受け入れられている方法は、script 要素を作成してから DOM に追加することですが (実際に行っているように)、スクリプトがいつロードされたかを検出するコールバック関数を割り当てることもできます。

function loadScript(url, callback){
    var script = document.createElement("script")
    script.type = "text/javascript";

    if (script.readyState){
        // handle IE
        script.onreadystatechange = function(){
            if (script.readyState == "loaded" || script.readyState == "complete"){
                script.onreadystatechange = null;
                callback();
            }
        };
    } else {
        // handle other browsers
        script.onload = function(){
            callback();
        };
    }

    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

使用法:

loadScript("https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js", function(){
    // jquery is loaded
});
于 2012-12-11T13:11:30.390 に答える
0

JSは、アプリケーションで使用するためのシングルスレッドです。無限ループを作成すると、ページ全体がスタックします。

通常、すべての依存ライブラリとライブラリが$(document).readyイベントを受信した後でのみ、JQueryからDOM APIを使用する前に、JQueryを含めます。

于 2012-12-11T13:09:27.953 に答える
0

ローダーはほとんどありません。簡単に使用できます。元。-

  1. http://headjs.com/
  2. http://labjs.com/
  3. http://www.dustindiaz.com/scriptjs

これをチェックしてください http://labjs.com/documentation.php。このコーディング アプローチは、あなたのものと似ています。あなたは書ける -

<script>
   $LAB
   .script("framework.js").wait()
   .script("plugin.framework.js")
   .script("myplugin.framework.js").wait()
   .script("init.js").wait();
</script>

wait() を参照してください。他のスクリプトを実行する前に、「framework.js」を最初にロードする必要があることを示しています。

于 2012-12-11T13:34:12.650 に答える