Questions sur getScript jQuery ()
-
01-10-2019 - |
Question
$.getScript("somescript.js", function() {
alert('Load Complete');
});
- Une fois chargé, est-il mis en mémoire cache ou est à nouveau chargé si référencé plus d'une fois?
- 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?
- 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.
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 +