Question

$.getScript("somescript.js", function() {
    alert('Load Complete');
});
  1. Une fois chargé, est-il mis en mémoire cache ou est à nouveau chargé si référencé plus d'une fois?
  2. Si un événement dépend de ce fichier en cours de chargement, l'événement sera retardé de fail / délai d'attente dans le cas où le fichier prend plus de temps à la charge ou ne se charge pas?
  3. Comment puis-je vérifier et de faire quelque chose dans le cas où le fichier ne se charge pas pour une raison quelconque?

Merci d'avance pour votre aide.

Était-ce utile?

La solution

1) demandes jQuery pour les scripts via AJAX ne sont jamais mises en cache, sauf si vous spécifiez que comme une option dans la fonction .ajax $ (). De la documentation :

"cache, Boolean

Par défaut: true, false pour 'script' dataType et 'jsonp'

Si la valeur false, il forcera les pages que vous demandez de ne pas être mis en cache par le navigateur. "

2) Je pense que je dois voir un exemple de code à saisir cette partie de la question.

3) Vous ne pouvez rien faire si .getScript $ () échoue. Mais, vous devez savoir que .getScript $ () est juste une version courte de la main .ajax $ (), equivilant à:

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

Cela signifie que vous pouvez mettre en œuvre le rappel de error, à faire quelque chose d'intelligent si le fichier ne se charge pas, par exemple:

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

Autres conseils

En plus de la réponse de Glen je voudrais proposer une autre option:

$.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
});

Pris en charge sur jQuery 1.12.0 +

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top