Newsgroup: it.comp.lang.javascript
Titolo: firefox : window.open e document.write

<script> finestra = window.open('','ciao','width=500,height=500');
finestra.document.write('ciao');
</script>
----
Ho provato con internet explorer è funziona...
con Firefox mi apre il pop up  visualizzandomi "ciao" , ma sotto dice
"interotto" e si carica la pagina all'infinito.
Infatti se provo a scrivere in write qualcosa di più complicato
(immagini ecc.) non me li visualizza.
Che devo fare?

Ho trovato la soluzione...aggiungendo all'inizio
finistra.document.open();
e alla fine finiestra.document.close();
Solo che ora ho un altro problema, in questa finestra popup devo
caricare un immagine e da quello che ho capito se l'immagine non si è
caricata completamente e attivandosi la funziona document.close() non
me la visualizza .
Se provo poi a ricaricare per la seconda volta la pagina, la visualizza
perchè molto probabilmente si è caricato l'immagine dalla cache.
Come posso fare?

 me la visualizza .
Premesso che è un bel po' di tempo che non utilizzo approcci del genere, non
dovrebbe comportarsi in questo modo.
Su quale browser hai tale comportamento? Hai una pagina online di prova dove
hai replicato quest'errore?
-- 
"E' un vero peccato che tutte le persone che sanno come far funzionare 
il Paese siano troppo occupate a guidare taxi o a tagliare capelli."
(George Burns)

Ecco qui: 
http://www.carlofuscapittore.it/index/catalogo/dipinti2.html
Spiego meglio il problema.
Se si clicca su zoom, mi apre la finestra popup con l'immagine dentro.
La prima volta che si apre il popup, non visualizza niente.Se poi si
riclicca su zoom l'immagine viene caricata.
faccio una document write facendo riferimento al id del popup e
principalmente scrivo questo.
<img border="0" alt="Clicca sull\'immagine per c udere questa finestra
!" height="'+h+'" width="'+w+'" src="'+img.src+'"/>
Ho notato che la prima volta che viene caricato il popup ,le variabili
h e w  sono a 0. Ho provato pure ad aprire un popup facendo solo
document write delle due variabili ma risultano sempre a 0 se caricate
per la prima volta, poi riprovo a cliccare nuovamente su zoom e tutto
funziona.
(questo solo su firefox)

 h e w  sono a 0. 
Okay, ho afferrato la questione. In pratica tu stai richiedendo le dimensioni
di un'immagine quando questa ancora non è stata caricata, tutto qui.
il "document.close()" non c'entra. 
Il punto del codice incriminato è il seguente:
var img = new Image(); 
img.src = URL; 
w=img.width;
h=img.height;
Se qui fai un alert di w e h, come hai già notato, risulteranno entrambi a
zero; a meno che l'immagine non sia già stata cachata. Questo perché
impostando "img.src", chiedi al browser di fare una richiesta della risorsa
specificata dalla variabile "URL", ma il caricamento della risorsa non è certo
istantaneo, mentre il codice script successivo alla richiesta viene eseguito
immediatamente.
Di conseguenza, w e h non sono ancora state avvalorate.
Non è un "problema" di Firefox, è così che funzionano i browser. Anche su IE
hai il medesimo effetto, se lo provi da remoto e non in locale (ovviamente
dipende anche dalla banda e dalla dimensione dell'immagine).
Per recuperare le dimensioni di un'immagine, devi utilizzare l'evento onload:
var img = new Image();
img.onload=function(){
	/* questo codice verrà eseguito solo al caricamento effettuato */
	alert(this.width+"x"+this.height);
}
/* questo codice viene eseguito subito */
img.src = URL;
Ed è dentro l'onload che aprirai la finestra con le dimensioni richieste.
Di queste cose comunque, ne è già stato parlando ampiamente in passato su
questo NG, facendo una ricerca negli archivi (con google groups ad esempio)
troverai sicuramente molte informazioni che ti potranno essere d'aiuto.
Un suggerimento: volendo potresti fare a meno di tutto questo, per recuperare
le dimensioni corrette.
Del resto, hai già l'immagine caricata con le dimensioni in proporzione. Se
hai mantenuto la stessa proporzione per tutte le immagini, per ottenere le
dimensioni originali ti basta recuperare le dimensioni dell'anteprima e
moltiplicarle per il fattore di scala usato.


Ok, funziona tutto :)
grazie