Pregunta

$.getScript("somescript.js", function() {
    alert('Load Complete');
});
  1. Una vez cargado, es almacenado en caché o se trata de volver a importar si se hace referencia más de una vez?
  2. Si un evento depende de este archivo se carga, se realizará el evento se retrasará de Falla / tiempo de espera en caso de que el archivo tarda más en carga o no carga?
  3. ¿Cómo puedo comprobar y hacer algo en caso de que el archivo no se puede cargar por alguna razón?

Gracias de antemano por su ayuda.

¿Fue útil?

Solución

1) jQuery solicitudes de guiones a través de Ajax no se almacenan en caché a menos que se especifique como una opción en la función $ .ajax (). Desde el documentación :

"caché, Boolean

Por defecto: verdadero, falso para 'script' tipoDatos y 'jsonp'

Si se establece en false que obligará a las páginas que usted solicita a no ser almacenado en caché por el navegador ".

2) Creo que necesito para ver código de ejemplo para comprender esta parte de la pregunta.

3) No se puede hacer nada si .getScript $ () falla. Sin embargo, se debe tener en cuenta que .getScript $ () es sólo una versión corta de la mano $ .ajax (), equivilant a:

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

Esto significa que se pueden implementar la devolución de llamada error, que hacer algo inteligente si el archivo no se carga, es decir:

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

Otros consejos

Además de la respuesta de Glen Me gustaría ofrecer otra opción:

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

Apoyado en jQuery 1.12.0 +

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top