Newsgroup: it.comp.lang.javascript
Titolo: come sapere se una finestra è aperta

Considerate il codice seguente
function CambiaImmagine(imgName,nomeimmagine)
{
parametri="toolbar=no,directories=no,menubar=no,width=400,height=400,rezisab
le=no"
      msg=open("","schermo",parametri);
       msg.document.write("<html><title>prova</title><body><table border='0'
width='100%' height='100%'><tr><td  valign='middle' align='center'><img
src='");
           msg.document.write (nomeimmagine);
           msg.document.write ("'></td></tr></table></body></html>");
      }
Questo codice crea una finestra indipendente con dentro un'immagine?
Questa funzione può essere chiamata parecchie volte.
Adesso chiaramente devo chiudere la finestra con msg.close() prima di
riaprirla di nuovo.
Come faccio a sapere se la finestra è già aperta?

var msg;     // msg = ""
msg=open("xxx") // MSG=="[Object]" per IE e msg=="[Object Window]" per NS
per controllare se è aperta basta che msg non sia nulla:
if (msg)
    alert(aperta)
CiaooooooooooooooooooooooooooooooooaiC.
                                      by
-------------------------------------------------------------------
     Ðarius. <- 
www.infotronica.it/darius
 ->
                 ICQ# 36150792
      - Art of JavaS.™ - 
www.probo.it/aoj
-------------------------------------------------------------------

     alert(aperta)
La soluzione prospettata funziona solo in parte.
Posto tutto il codice
<script LANGUAGE="JAVASCRIPT">
var msg
msg=""
function CambiaImmagine(imgName,nomeimmagine)
{
   if (navigator.appName == "Netscape")
      {
parametri="toolbar=no,directories=no,menubar=no,width=400,height=400,rezisab
le=no"
           if (msg)
                msg.close()
              }
           msg=open("","schermo",parametri);
           msg.document.write("<html><title>prova</title><body><table
border='0' width='100%' height='100%'><tr><td valign='middle'
align='center'><img src='");
           msg.document.write (nomeimmagine);
           msg.document.write ("'></td></tr></table></body></html>");
      }
   else
           document.images[imgName].src=nomeimmagine
      }
}
</script>
In pratica se il browser č IEplorer sostituisce un'immagine, mentre se č
Netscape apre una nuova finestra con dentro l'immagine.
Perchč? Perche le immagini sono di dimensioni diverse e IE mi reimpagina la
pagina, mentre netscape no.
La soluzione prospettata non mi funziona per i seguenti motivi:
- se la finestra creata la chiudo a mano non funziona
- se faccio il reload della pagina non funziona.
Inoltre ho anche un'altro problema. Vorrei creare la finestra separata delle
dimensioni esatte dell'immagine che ci deve stare dentro. Ma la soluzione
immagine= new image()
immagine.src=nomemmagine
per recuperare le grandezze con immagine.width e immagine.height non
funzionano con netscape (cioč danno 0)
Ho messo la pagina di prova on line se volete verificare
http://www.camping.it/provagrandeepiccole/piccoleegrade.htm

funzionano con netscape (cioè danno 0)
Il tuo problema è dovuto al fatto che quando crei l'immagine non ne
specifichi le dimensioni, pertanto vengono assegnate quelle predefinite: 0,0
e non le puoi più modificare.
Per creare un'immagine di date dimensioni devi fare new Image(x,y), ma da
quanto ho capito la cosa ti può servire poco.
Alternativa interessante sarebbe quella di ridimensionare la finestra
piccola in base alla dimensione dell'immagine:
a=open(...)
a.document.write("<img name=nomeimg src=...")
e poi, appena caricata l'immagine:
if (a.document.images.nomeimg.loaded)
    a.resizeTo(a.document.images.nomeimg.width,
a.document.images.nomeimg.height)


Funziona la soluzione di ridimensionare la finestra con resizeTo.
Non controllo msg.document.images.nomeimg.loaded, poichè sembra funzionare
anche senza effettuare il controllo.
Grazie per document.close()
Continua invece a non funzionare la soluzione per chiudere la finestra.
Sembra che onUnload nel tag body della dinestra creata non funzioni per
niente.
Ho provato anche a metterci <body onUnload='alert('ciao')> ma non fa
assolutamente niente.
Inoltre vorrei se possibile non inserire pezzi di codice nel tag body del
documento principale.