Ti propongo una soluzione alternativa: e se alleggerissi/cambiassi il background?
Ci mette 2/3 secondi con che tipo di connessione? Quanto è grande l'immagine?
Se invece vuoi continuare su questa strada, probabilmente esiste qualcosa di già fatto (fare il preload delle immagini è un problema molto comune), ma volendolo scrivere a mano io farei una cosa del genere:
- crei un div che copra l'intero schermo, e gli dai un id tipo "preloadOverlay"
- poi usi uno script di questo tipo:
Codice:
backgroundImg = new Image();
backgroundImg.onLoad = function(){
var overlay = document.getElementById("preloadOverlay");
overlay.parentNode.removeChild(overlay);
}
backgroundImg.src='sfondoMoltoGrosso.bmp';
Personalmente userei jQuery per agganciare questo codice all'evento ready del document e quindi il codice diventerebbe:
Codice:
$(document).ready(function() {
backgroundImg = new Image();
backgroundImg.onLoad = function(){
$("#preloadOverlay").remove();
}
backgroundImg.src='sfondoMoltoGrosso.bmp';
});