Newsgroup: it.comp.lang.javascript
Titolo: Div  - offsetHeight - problema con caricamento immagini

Salve, volevo porvi il seguente problema riscontrato con Firefox e
derivati (con IE va tutto bene).
Io ho un div che tramite uno script carica delle immagini di altezza
variabile.
Poichè il div deve avere un'altezza minima di 400px, facevo il
controllo tramite javascript, e nel caso l'altezza fosse stata minore
veniva forzata a 400px.
al primo caricamento della pagina però la immagini impiegano un po' ad
essere caricate e lo script ho notato che non attende il loro
caricamento e valuta subito l'altezza, che purtroppo risulta pesso
minore di 400px, anche se alla fine del caricamento delle immagini è
evidentemente maggiore...
questo mi causa problemi con i div sottostanti che iniziano a
sormontare le immagini...
ovviamente se aggiorno la pagina (avendo tutto in cache) l'altezza
torna ad essere calcolata bene!
cosa posso fare?
come posso dire allo script di controllare l'altezza solo quando le
immagini sono state caricate completamente?
avete altre soluzioni da proporre?
vi ringrazio tantissimo,
Claudio

 immagini sono state caricate completamente?
var i=new Image();
i.onload=function() {
  //controlla altezza
};
i.src="url_immagine";
-- 
Nando [?]
Apostolo della Prova

In data 17 Oct 2006 07:15:48 -0700, clam80 ha scritto:
[CUT]
e un po' di codice dov'è?
in generale, senza vedere cosa stai facendo, potresti mettere la tua
function di verifica onload dei tag img (viene scatenata quando ha
terminato di caricare l'immagine).
p.s. attenzione che non è xhmtl-compatibile se lo metti direttamente come
attributo, vedi te se ti interessa la compatibilità xhtml.
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

Ciao, diciamo che la pagina viene caricata in questo modo:
<div id="pippo">
  <?php //funzione ciclica che carica alcuni div con immagini in
verticale ?>
</div>
funzione javascript che controlla l'altezza di pippo
----
Mettendo un onload al caricamento di img dovrei passare il nome del div
principale (pippo) alla funzione php, questo però vorrei evitarlo per
rendere la funzione abbastanza veratile per altre pagine...

 Poichè il div deve avere un'altezza minima di 400px, 
Con questa frase ti rispondi da solo: usa la proprietà min-height dei CSS:
div.box{
	min-height : 400px;
}
<div class="box">..</div>
Dato che IE < 7 non supporta min-height, ma gestisce height come se fosse
min-height, puoi utilizzare questo workaround:
div.box {
	min-height: 400px;
	height: auto !important;
	height: 400px;
}
-- 
~ Non esistono donne brutte. Dipende solo da quanta vodka bevi.
(proverbio russo)

 rendere la funzione abbastanza veratile per altre pagine...
beh, se il div contiene la img puoi recuperare un riferimento al div
nell'evento onload con this.parentNode;
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

Ragazzi per ora vi ringrazio, usero il consiglio sulla modifica del
css, poi se nelle prossime versioni si ripresenterà il problema
proverò con le proposte javascript...
per il momento mi sembra meglio controllare a livello di stile il
problema :-)
grazie a tutti!
Claudio

 problema :-)
se il problema è solo la min-height è sicuramente la strada migliore.
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.