Domanda

$.getScript("somescript.js", function() {
    alert('Load Complete');
});
  1. Una volta caricato, è memorizzato nella cache o è caricato di nuovo, se si fa riferimento più di una volta?
  2. Se un evento dipende da questo file viene caricato, sarà l'evento essere ritardato di Fail / timeout nel caso in cui il file richiede più tempo per il carico o non viene caricato?
  3. Come faccio a verificare e fare qualcosa nel caso in cui il file non viene caricato per qualche motivo?

Grazie in anticipo per il vostro aiuto.

È stato utile?

Soluzione

1) le richieste di jQuery per gli script tramite AJAX non vengono mai memorizzate nella cache se non si specifica che come opzione nella funzione $ .ajax (). Dal documentazione :

"cache, booleano

Predefinito: true, false per dataType 'script' e 'jsonp'

Se impostato su false che costringerà le pagine che si richiede di non essere memorizzate nella cache dal browser ".

2) Penso che ho bisogno di vedere il codice di esempio per cogliere questa parte della domanda.

3) Non si può fare nulla se $ .getScript () non riesce. Ma, si dovrebbe essere consapevoli del fatto che $ .getScript () è solo una versione breve mano di $ .ajax (), l'equivalente di:

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

Questo significa che è possibile implementare la richiamata error, per fare qualcosa di intelligente se il file non viene caricato, vale a dire:

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

Altri suggerimenti

Oltre alla risposta di Glen mi piacerebbe offrire un'altra opzione:

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

Supportato su jQuery 1.12.0 +

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top