Ho una pagina di galleria fotografica ospitata su un CMS (Squarespace) che ha alcuni dei propri script che caricano le anteprime in modo asincrono.Come eseguire una funzione jQuery dopo tutto e qualsiasi altro javascript è stato eseguito
Le immagini di grandi dimensioni attuali, tuttavia, non sono precaricate, così ho deciso di aggiungere il mio script proprio nel mix di fare solo caricare il browser quelle immagini più grandi nella cache in background, in questo modo:
(function($) {
var cache = [];
// Arguments are image paths relative to the current page.
$.preLoadImages = function() {
var args_len = arguments.length;
for (var i = args_len; i--;) {
var cacheImage = document.createElement('img');
cacheImage.src = arguments[i];
cache.push(cacheImage);
}
}
})(jQuery)
$(window).load(function(){
$.preLoadImages(
"/picture/1.jpg",
"/picture/2.jpg", //etc.
);
});
Ho inserito il mio codice in $ (window) .load() perché si tratta di uno script in background e non è essenziale nemmeno funzionare, è solo per migliorare le prestazioni.
Tuttavia, penso che questo script stia in qualche modo bloccando lo script di precaricamento della miniatura del CMS.
Ho ragione? E, soprattutto, c'è un modo per imporre che il mio script venga eseguito solo dopo che tutti gli altri script sulla pagina sono stati eseguiti?
applausi
grazie nick. ha senso, tuttavia il mio script blocca in qualche modo il caricamento preliminare della miniatura ... Non so come, ma l'effetto è consistente e significativo. Potrebbe essere qualcosa a che fare con i limiti delle connessioni del browser ...? – andy
@andy - Potrebbe, se sono nello stesso dominio, la specifica HTTP effettiva dice 2 connessioni per dominio alla volta, che IE in pa obbiettivi rticolari (altri consentono una pipeline più semplice). Può dare alle immagini un URL diverso ?, ad esempio 'http: //static.mydomain.com/Images/....', questo consentirebbe * un altro * 'n' numero di connessioni, perché lo considera come un altro dominio da 'www.', per esempio. –
hey Nick, grazie per il frammento extra, in realtà ho provato ready() prima, ma ho ottenuto il blocco, quindi ho pensato che window.load() sarebbe stato d'aiuto, ma ovviamente le miniature sono state caricate asincrone quelle che non lo sarebbero state fare la differenza ... giusto? forse ho torto completamente, presumo che sia un blocco perché le miniature si caricano solo dopo che tutte le mie immagini sono state caricate in background – andy