Newsgroup: it.comp.lang.javascript
Titolo: Caricamento in corso...

Salve a tutti. Ho l'home page del mio sito che è un po' pesantuccia e vorrei
evitare che all'apertura si caricassero pian piano tutte le immagini
facendola apparire a pezzi. Pertanto mi chiedevo se fosse possibile qualche
comando JS che mi pre-caricasse tutte le immagini varie e poi mi facesse
aprire la pagina in questione in modo che appaia già pronta. E' possibile?
Grazie mille
Ciao
Gianluca

Soluzione forse non ottimale ma comoda: perché non fai una prepagina,
visualizzi un "loading", carichi tutte le immagini e al termine rimandi alla
home page?
In questo modo il client se le ritrova in cache...


è una cosa brutta ma potresti crearti 2 frame le cui dimensioni passano da 0
a 100% alternativamente
cioè attivi a 100% il primo frame caricandoci dentro un bel ciclo di loading
grafico con tanti bei numerelli magari andando a incrementare ogni volta che
un immagine viene caricata.
nell'altro frame con dimensione 0 carichi la home effettiva
quando la pagina è caricata inverti i valori della dimensione dei frame e
per incanto la pagina apparirà bella e pronta
è come simulare i vecchi sceeen della CGA per chi ha avuto la sfortuna di
doverla usare.

 aprire la pagina in questione in modo che appaia gią pronta. E' possibile?
Oltre al quella proposta daCristiano, puoi optare per un altra soluzione, ma
dipende essenzialmente da come e' strutturata la pagina.
Puoi nascondere il contenuto della tua pagina tramite layer, inserendo una
scritta "Caricamento in corso" (se vuoi fare una cosa figa, potresti anche
mettere la percentuale riferita al numero di immagini che ha caricato
rispetto a quante ne deve caricare, il tutto utilizzando l'onload dei vari
tag IMG), per poi mostrarla a operazione conclusa (utilizzando l'evento
onload del documento).
--------------------------------
Inviato via 
http://usenet.libero.it

 doverla usare.
Le pagine video :) Che tutt'ora si usano in programmazione ludica (anche se
ci sono strati e strati di librerie..).. Ai tempi, era un gran bel casino.
Con una VGA, a 320x200x256 colori, avevi UNA sola pagina video. Questo
perche' i "tecnici" della VGA decisero di rendere piu' veloce lo sviluppo da
parte dei programmatori, penalizzando "3/4" di memoria video.. una
robuccia..
.. Fortunatamente, con un po' di caro vecchio ASM, potevi disabilitare la
modalita' di default, e riprogrammarti autonomamente la VGA per recuperare i
3/4 di memoria perduta. Cosi' potevi avere 320x200x256 con 4 pagine video..
oppure, risoluzioni "particolari" (360x240, etc..)
Il caro e vecchio "X-Mode".. :)


 onload del documento).
Grande !!! mi do tre martellate in testa per non averci pensato prima.
e dire che l'ho anche fatto ma per altri motivi, è semplicissimo ottenere
l'effetto e non solo puoi inserire un contatore ma puoi visualizzare
un'immagine ridotta delle IMG caricate in una finestrina piccola ogni volta
che una immagine è stata finita di caricare.
ZerO confermo sei grande.


Direi che questa proposta č quella piů "d'impatto"... mi potresti indicare
un sito dove spiega come fare il tutto?
Grazie mille
Ciao
Gianluca

 ha scritto nel messaggio
news:alsitj$o69b$1...@ID-147253.news.dfncis.de...

Avevo pensato ad una cosa del genere in effetti. Per caricare le immagini
avevo pensato ad una cosa del genere
var immagine=new Array()
function preloadimages(){
for (i=0;i<preloadimages.arguments.length;i++){
immagine[i]=new Image()
immagine[i].src=preloadimages.arguments[i]
etc. etc.
ma poi non so' come fare a rimandare alla Home Page una volta terminato di
caricare il tutto. Mi daresti qualche dritta o un Url di un tutorial o
manuale dove andare a vedere? Grazie mille
Ciao
Gianluca

al termine del caricamento: document.location='tuapagina.htm'

 un sito dove spiega come fare il tutto?
Sicuramente ce ne sono, ma visto che io non sono un assiduo navigatore in
tal senso, non saprei dove indirizzarti, purtroppo.
Cmq lo script in se' e' abbastanza semplice. Se opti per un layer che
"nasconda" la pagina (devi stare attento pero' ai campi select in IE ed a
tutti i campi form in NS.. se la pagina in questione li contiene, "buca" il
layer), basta che tu aggiunga in fondo alla pagina qualcosa del
tipo:
<div id="loading" style="position:absolute;top:0px;left:0px;">
<table cellspacing=0 cellpadding=0 border=0 width=100%
height=100%><tr><td>Loading</td></tr></table>
</div>
e che nell'head inserisca:
<script>
onload=function(){
    if (document.layers)
        document.layers["loading"].visibility="hide";
    else if (document.all)
        document.all["loading"].style.visibility="hidden";
    else if (document.getElementById)
        document.getElementById("loading").style.visibility="hidden";
}
</script>
Per quanto riguarda la percentuale di caricamento (o il numero delle
immagini caricate), devi semplicemente mettere un event handler nella
funzione onload dei tag IMG. Ti consiglio di farlo solo per le immagini di
un certo peso.
<img src="..." width=".." height=".." alt=".." border=".."
onload="loadedImg()">
In questo modo ogni volta che un immagine viene caricata, scatena quella
funzione.
Cosi', salvandoti in una variabile globale, il numero totale delle immagini
a cui hai messo l'event handler, e una variabile globale per il numero delle
immagini gia' caricate (inizialmente uguale a zero, ovviamente), puoi
utilizzare la loadedImg per incrementare quest'ultima variabile di uno, ad
ogni chiamata, per poi riscrivere il layer mostrando qualcosa tipo:
nImgLoaded+"/"+nImgMax
.. poi, cosa fargli fare alla funzione loadedImg sta a te :)
