Newsgroup: it.comp.lang.javascript
Titolo: window.open() & window.close()

Ciao,
    Utilizzo l'istruzione window.open per aprire delle finestre (se utilizzo
window.showModalDialog non riesco ad ottenere un puntatore alla finestra
padre "opener" per eseguire delle operazioni), e per far si  che quando la
finestra principale riacquista il focus la finestra figlio si chiuda associo
all'evento window.onfocus la funzione CloseWin, che nel caso in cui il
puntatore alla finestra figlio non sia null ne esegue la chisura. Il tutto
funziona perfettamente sia in IE che NETSCAPE. Ma con NETSCAPE, se chiudo la
finestra figlio , quando prende lo stato attivo la finestra padre sulla
barra di stato mi compare il seguente messaggio: MyWin1.close() non č una
funzione valida; tutto questo nonostante io faccia il controllo per vedere
se il puntatore č nullo. (perň nonostante la segnalazione dell'errore
funziona tutto)
A cosa č dovuto l'errore? (forse il parser javascript vede che MyWin1 non č
piů un oggetto valido ed allora, anche se non viene eseguito mi segnala
l'errore su MyWin1.close();?)
ecco il codice:
var MyWin1
 MyWin1=null;
 function CloseWin() {
  if (! (MyWin1==null)){
    MyWin1.close();
   MyWin1=null;}
     }
 }
 window.onfocus=CloseWin;
 function LoadUser() {
    MyWin1=window.open ("Myasp.asp")
 }

  }
Mhmm.. nel tuo codice c'e' una parentesi graffa in piu'.
Cmq bastarebbe fare:
function CloseWin(){
    if (!MyWin1)
        MyWin1.close();
    MyWin=null;
}
Cmq ho provato il codice senza riscontrare l'errore da te segnalato..

 Cmq ho provato il codice senza riscontrare l'errore da te segnalato..
Mi sembra un po' strano perché se la figlia viene chiusa senza chiedere il 
permesso la MyWin1 che cresce nella pancia della madre non cambia stato e quindi 
il tentativo di close(); viene eseguito comunque.
Per fargli cambire stato intercetto l'evento "onUnload" nella figlia e uso 
"opener" per modificare la variabile.
Provati e funzionanti.
------ file "madre" ----------
<HTML>
<HEAD>
<SCRIPT>
<!--
var MyWin = false;
function apri()
	{
	MyWin=window.open("finprova.html","");
	Mywin=true;
	}
function Chiudi()
	{
	MyWin?MyWin.close():null;
	MyWin=false;
	}
//-->
</SCRIPT>
</HEAD>
<BODY onFocus="Chiudi()">
<A HREF="javascript:apri()">Apri</A> - <A HREF="javascript:Chiudi()">Chiudi</A>
</BODY>
</HTML>
------ fine "madre" ----------
------ file "figlia" - ("finprova.html") ---------
<HTML>
<HEAD>
<SCRIPT>
<!--
function Aggiorna()
	{
	opener.MyWin=false;
	}
//-->
</SCRIPT>
</HEAD>
<BODY onUnload="Aggiorna()">
<H1>Finestra Prova</H1>
</BODY>
</HTML>
------ fine "figlia" - ("finprova.html") ---------
Ciao, Riccardo
-----------------------------------------------------------------------
http://www.bottegasanlorenzo.it
http://www.jsdir.com
Need a JavaScript password?
http://www.agora.it/Ri.Riccardi/ingresso.html
-----------------------------------------------------------------------
"Any sufficientely advanced technology is indistinguishable from magic"
Arthur Charles Clarke
-----------------------------------------------------------------------
.
.
.
.
.
 . . . . . . I Fantastici 4 stanno arrivando . . . . . . manca poco! . .


Ciao, solo una richiesta di chiarimento se posso:
L' istruzione Mywin=true in questo caso, non č ridondante? 
avendola aperta non č di per se stessa true a questo punto?
comunque nella funzione di chiusura  di Emanuel
non sarebbe sufficiente integrare le condizioni di controllo cosě?
if(Mywin&&Mywin.open&&!Mywin.closed)
Ciao 
( lunedě vedremo i magnifici 4? guarda che dopo tutto il battage
pubblicitario devono essere magnifici sul serio ;)          )

 pubblicitario devono essere magnifici sul serio ;)          )
Penso proprio che non ve ne pentirete. Ci sono molte sorprese.
Ciao, Riccardo
-----------------------------------------------------------------------
http://www.bottegasanlorenzo.it
http://www.jsdir.com
Need a JavaScript password?
http://www.agora.it/Ri.Riccardi/ingresso.html
-----------------------------------------------------------------------
"Any sufficientely advanced technology is indistinguishable from magic"
Arthur Charles Clarke
-----------------------------------------------------------------------
.
.
.
.
.
 . . . . . . I Fantastici 4 stanno arrivando . . . . . . -42 ore! . .

 il tentativo viene comunque fatto.
Adesso ho afferrato. Hai ragione, il tentativo dovrebbe cmq scatenarsi
almeno una volta, perchè la chiusura di una finestra non setta certamente la
variabile che la punta a "null".
Il fatto strano e' che ne' su IE ne' su NS da' errore.Che si renda cmq conto
che la variabile punta ad un istanza non piu' presente..?

 che la variabile punta ad un istanza non piu' presente..?
Forse ti č sfuggito il fatto che nella figlia ho fatto un bell' 
onUnload="Aggiorna()"
e sopra c'č uno script (function Aggiorna() ), appunto, che fa 
"opener.MyWin=false", quindi cambia stato alla variabile.
Ciao, Riccardo
 . . . . . . I Fantastici 4 sono appena usciti dal casello . . .


 "opener.MyWin=false", quindi cambia stato alla variabile.
Infatti io non intendevo NEL tuo codice, ma in quello precedente al quale ho
risposto "non ho riscontrato nessun errore" (e, tutt'ora, non ne riscontro).

 risposto "non ho riscontrato nessun errore" (e, tutt'ora, non ne riscontro).
Ah :-)
Però se tu rispondi ad un altro nel mex rivolto a me.... :-))))
Ciao, Riccardo
-----------------------------------------------------------------------


 Però se tu rispondi ad un altro nel mex rivolto a me.... :-))))
Ma io ho risposto a te, ed il msg ERA rivolto a te.. cosa intendi? :?