Newsgroup: it.comp.lang.javascript
Titolo: HO UNA PAGINA HTML GROSSA... CHE DEVO FARE?

Ho una pagina di dimensioni eccessive. Non mi riferisco alle immagini ma ai
KB della pagina: 23 kb.
Posso visualizzare suibito un msg di ... CARICAMENTO IN CORSO ATTENDERE...
come prima cosa dopo lo sfondo nero?
pol...@freemail.it
grazie

Puoi usare un trucco bieco & sporco ma efficente:
<img src="gif1.gif" name="loader" alt="Caricamento in corso">
Unito ad uno script che, al caricamento di tutte le immagini presenti nella
pagina cambi la proprieta' SRC dell'immagine loader con una gif trasparente
di 1 x 1 pixel.
gif1.gif e' una gif di 2 colori (bianco su nero per esempio) con la scritta
caricamento in corso.
Non e' molto elegante ma funziona.
Saluti
Nettuno

<html>
<head>
<script>
/***************************************************************************
*****
Copyright (C) 1999 Thomas Brattli
This script is made by and copyrighted to Thomas Brattli at 
www.bratta.com
Visit for more great scripts.
This may be used freely as long as this msg is intact!
****************************************************************************
****/
file://Browsercheck
n=document.layers
ie=document.all
file://Hides the layer onload
function hideIt(){
 if(ie || n){
  if(n) document.divLoadCont.visibility="hidden"
  else divLoadCont.style.visibility="hidden"
 }
}
</script>
<style>
#divLoadCont{position:absolute; width:100%; height:95%; top:0; left:0;
background-color:white; layer-background-color:white;
font-family:arial,helvetica; z-index:100}
TD{font-family:arial,helvetica}
</style>
</head>
<body onload="hideIt()">
 <script>
 file://We write the table and the div to hide the content out, so older
browsers won't see it
 if(ie || n) document.write('<div id="divLoadCont"><table width="100%"
height="95%" align="center" valign="middle"><tr><td width="100%"
height="100%" align="center" valign="middle"><h3>Attendere per
favore....</h3></td></tr></table></div>')
 </script>
</body>
</html>

come prima cosa dopo lo sfondo nero?
Certo!
Si tratta, in pratica, di nascondere le varie operazioni di
caricamento (tipo spostamento di layer, immagini mentre sono
scaricate, ecc..), in modo tale che all'utente si mostri la pagina
solo quando e' gia' stata completamente scaricata in locale.
Ci sono diverse tecniche per fare quel che dici tu, dipende anche da
come e' strutturata la tua pagina. Queste sono un paio:
a)
Potresti mettere un layer in primo piano, che ti occupa in tutta la
sua larghezza e lunghezza la pagina che sta caricando, e quindi
nasconde il contenuto della stessa.
Nel Layer puoi scriverci quello che ti pare, del tipo
"Caricamento della Pagina in corso, Attendere Prego", magari mettendo
un paio di stili per farla piu' carina, ma il concetto e' quello.
Nell'evento "onLoad" della pagina, nascondi il Layer succitato,
in modo da mostrare la tutta la pagina una volta che sia caricata
completamente.
L'ho usata un paio di volte, ed e' cmq una tecnica che ho visto usare
spesso.
+ PRO
Usa un layer solamente
- CONTRO
Dipendentemente da come hai realizzato la tua pagina, ad esempio se
hai fatto uso massiccio di layer visibili, non e' detto che il layer
ti appaia sempre in primo piano nascondendoti tutto il resto, rendendo
vano tutto l'approccio.
In tal caso bisognerebbe nascondere anche i layer incriminati.
b)
Puoi mettere tutta la tua pagina, da dopo il tag "<BODY>" fino al tag
"</BODY>" in un layer, con l'attributo "visibility" settato ad
"hidden".
Nell'evento "onLoad" della pagina, setti rendi il layer visibile.
Il risultato e' che la pagina verra' mostrata interamente appena e'
finito il caricamento.
In aggiunta, puoi mettere un layer che avverta l'utente che il browser
sta caricando la pagina, e renderlo invisibile appena rendi visibile
la pagina.
+ PRO
Tutto il contenuto della pagina diviene REALMENTE non-visibile, non
viene semplicemente nascosto.
Tutta la pagina e' contenuta in un layer. Questo significa che puoi
usare parecchie tecniche per visualizzarla.
Invece che renderla semplicemente visibile, potresti farla apparire
poco a poco con una tecnica di "exploding", oppure farla scorrere da
un punto dello schermo fino al centro, o addirittura in IE puoi
applicargli effetti di tipo FADE, LIGHT, BLUR, ecc..
- CONTRO
Se vuoi scrivere un msg di attesa, devi aggiungere un layer.
Tutta la pagina e' contenuta in un layer, quindi la "gerarchia" della
pagina cambia.
Ovvero, se usi il DHTML, i riferimenti ai layer interni cambiano
rispetto a prima.
Avere parecchi layer "annidati" certe volte non e' un bene.
Spero di esserti stato d'aiuto. :)
--
C'ya,
 Benjamin Reilly
  |
  |
'/|\'
\\O//
//"\\
'\ /'
________________________________________TagLine___
"Quanti Angeli danzano sulla punta di uno spillo?"



Tarkus ti svelo un trucco bieco & sporco:
poiche' il guardafuori espresso quando incontra il doppio slash "//" fa un
macello
 ecco vedi?
Prova a sostituirlo con un triplo slash /// che invece non sortisce alcun
effetto (e gli script continuano a funzionare... ^___^)
Ciau
Nettuno