2012-02-03 33 views
0

パフォーマンス上の理由から、ページロードイベントでロードするのではなく、クリックイベントでJavascriptファイルをロードします。 javascriptが既に読み込まれている場合、特にそのことを知っていますか?Javascript loaded jquery getscript

今、私は「ロードされた」イベント

var javascriptLoaded=false 

if (!javascriptLoaded) 
     $.getScript('/scripts/test.js', function() { 
      javascriptLoaded = true; 
      setTimeout(function() { 
      callSomeFunctionhere(); 
      }, 1000);      
     }); 

をチェックするために、グローバル変数を維持していますがこれを行うのいずれかのより良い方法はありますか?

+1

可能重複(http://stackoverflow.com/questions/4036203/check-if-javascript-file-was-loaded) –

+0

@Diodeus jqueryが$またはJqueryオブジェクト – kobe

答えて

1

はい。あなたがしたいことは、成功のコールバックを使用することです。スクリプトをロードするためのajaxリクエストが正常に終了した場合にのみコールバックメソッドが呼び出されます。たとえば、これは等価です:スクリプトがロードされているかどうかを確認するために

$.ajax({ 
url: "/myscript.js", 
dataType: "script", 
success: function(){ 
    scriptLoaded = true; 
    //do some more stuff now that the script is loaded 
} 
failure: function(){ 
    scriptLoaded = false; 
} 

}); 
+0

を持っているので、その質問はjqueryだけに答えますが、私はすでにこれをやっていますあなたが私のコードを見るなら、 – kobe

+0

ああ、私は参照してください。 require.js http://requirejs.org/を使って試してみてください。あるいは、yepnope.jsを使用できる条件付きローディングを追加したい場合は、 – gaffleck

+0

gaffleckに感謝します。 – kobe

1

簡単な方法は、そのスクリプトが呼び出し可能であるかどうかを確認することです:[javascriptのファイルがロードされたかどうかを確認してください]の

if($.fn.foo == undefined) { 
    $.getScript("/path/to/script/foo.js", function() { 
     // success 
    }); 
} 
+0

これは動作するだけです名前空間が正しい場合 – kobe

関連する問題