Desidero precaricare un file JS di grandi dimensioni dopo che una pagina è stata caricata, in modo che quando si collega a quel file JS nella pagina richiesta è già scaricato e memorizzato nella cache.Precarica JS, ma non eseguirlo
sto praticamente facendo in questo momento, e funziona, ma ovviamente non è la strada giusta:
preload_js = new Image();
preload_js = "http://domain.com/files/file.js";
Questo sembra un metodo come semplice e veloce, senza bisogno di Ajax, ecc ed è funziona alla grande.
Qual è il modo corretto per farlo? Sicuramente non con Ajax in quanto sembra eccessivo per questo.
So che ci sono molti metodi per caricare JS ma sembrano tutti eseguire il codice dopo che lo script è stato caricato, cosa che non voglio.
Non voglio usare jQuery (o qualsiasi libreria), deve essere semplice JS. Grazie per qualsiasi aiuto.
Sospetto che non esista una soluzione "più pulita". Buona domanda. Bel trucco. –
Si può semplicemente avvolgere il proprio codice in una dichiarazione di funzione che è possibile chiamare quando è necessario e includerlo con un tag '
Da this blog post:
Vedere the post per maggiori dettagli.
EDIT: Guardando le commenti su questo post, qualcuno accenna this link, che parla dei problemi con il metodo
new Image()
precarico in IE e altri browser. Ecco un estratto:Questo spiega il comportamento indicato dall'OP nel commento seguente (IE9 scarica solo 4 KB del file).
Sembra che l'unica opzione affidabile cross-browser può essere quella di utilizzare Ajax ...
fonte
2013-05-17 05:37:18
Non ho accettato la risposta perché ho avuto grossi problemi. Il codice così com'è causa problemi su un iPhone e IE9 (e non ho ancora testato più di questo). Un iPhone impiega anni per caricare (utilizzando il metodo nel codice) e preferisce il metodo utilizzato dal codice per IE (che quindi funziona correttamente). IE9 scarica solo circa 4k del file, che è inutile. Grazie per aver indicato la soluzione, ma non è utilizzabile. – user2143356
Ok, quindi sembra che AJax sia necessario. Il problema è tutto questo spazzatura cross domain. Tutti i file JS sono su un CDN, incluso jQuery ospitato da Google CDN, ma continuo a ricevere il problema del dominio incrociato. Ho letto su JSONP ma la gente continua a parlare di callback. Voglio solo precaricare un file. L'esempio image.src è veloce e semplice (se ha funzionato!). C'è un semplice parametro da aggiungere al mio Ajax? Sto usando uno script Ajax di base per la vaniglia. – user2143356
USO
window.document.onload assicurarsi che il java script non verrà eseguito fino a quando dom è pronto
fonte
2013-05-17 06:18:03
Questo fraintende completamente la domanda. – slebetman