質問

$.getScript("somescript.js", function() {
    alert('Load Complete');
});
  1. ロードされたら、キャッシュされていますか、それとも複数回参照した場合、再びロードされますか?
  2. イベントがこのファイルがロードされていることに依存している場合、ファイルの読み込みに時間がかかるかロードしない場合に、イベントが失敗/タイムアウトが遅れますか?
  3. 何らかの理由でファイルがロードされなかった場合に備えて、どうすれば確認して何かをすることができますか?

よろしくお願いします。

役に立ちましたか?

解決

1) ajaxを介したスクリプトのjQueryリクエストは、$ .ajax()関数のオプションとしてそれを指定しない限り、キャッシュされることはありません。から ドキュメンテーション:

「キャッシュ、ブール

デフォルト:true、false fals 'fals' "script 'および' jsonp '

falseに設定すると、ブラウザにキャッシュされないように要求するページが強制されます。」

2) 質問のこの部分を把握するには、サンプルコードを表示する必要があると思います。

3) $ .getScript()が失敗した場合、何もできません。ただし、$ .getScript()は$ .ajax()の短いバージョンであることに注意する必要があります。

$.ajax({
  url: url,
  dataType: 'script',
  success: function(data) {
    //
  }
});

これは、実装できることを意味します error コールバック、ファイルがロードに失敗した場合、賢いことをするために、つまり:

$.ajax({
  url: url,
  dataType: 'script',
  success: function(data) {
    //
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    alert("panic");
  }
});

他のヒント

グレンの答えに加えて、別のオプションを提供したいと思います。

$.getScript({
    url: "foo.js",
    cache: true // or false, depending on your preference. in most cases you would want it true.
}).done(function(){ 
    // do something when script was loaded and run
}).fail(function(){
    // do something when script failed to load
});

jQuery 1.12.0+でサポートされています

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top