Newsgroup: it.comp.lang.javascript
Titolo: aprire una pop-up dopo la chiusura di una finestra

Ciao !
Sto tentando di far aprire una pop-up dopo che la finestra viene chiusa,
esclusivamente se l'utente sceglie di chiuderla (utilizzo
l'event.returnValue).
Per ora ho utilizzato questo codice, ma non funziona:
<script language="Javascript" for="window" event="onbeforeunload">
      event.returnValue = "MESSAGGIO DI CONFERMA";
</script>
<script language="JavaScript" for="window" event="onunload">
       window.open("finestra.asp","TITOLO","OPZIONI"
</script>
Avete altre idee ?
Ho pensato di mettere l'event.returnValue in un if e controllare che venga
premuto "Ok", ma non so come farlo dato che appena viene data la conferma la
finestra viene chiusa, quindi non so come controllare ...
Grazie !

 Avete altre idee ?
Mah, direi di si'! Quello che ti propongo e' piu' semplice ed e'
crossbrowser!
<body .... onUnLoad="open(...)">
semplicemente sfrutta l'evento onUnLoad nel body! Tieni presente che queste
pop-up possono essere bloccate dai browser furbi se attivate le opzioni
opportune...

 l'event.returnValue).
Non ne hai il modo; almeno non su web.. Ma cerco di spiegarmi meglio.
Prima di tutto, il codice che hai usato e' IE-only, il che potrebbe anche
andare bene se sei in una intranet e stai sviluppando una web-application.
Ma la cosa fondamentale e' che da web non puoi sapere quando una finestra
viene chiusa o meno. L'evento onunload e' relativo al documento, e quindi
si attiva nel momento in cui il documento viene "scaricato" dalla memoria.
Bada bene. Il documento. Non la finestra. E il documento viene "scaricato"
dalla memoria nel caso in cui si cambi pagina, si faccia un reload, o si
chiuda il browser.
Quindi quando ti appresti a fare script del genere, tieni bene a mente
questo, ovvero che la popup si attivera' anche quando l'utente cambia
pagina o fa un refresh. Non solo quando chiude la finestra del browser.
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"Questa e' una lezione difficile, ma importante: Cio' che e' stato, e cio'
che sara', non cambia cio' che e'.
Sta a te decidere poi come prendere questa cosa,se logorarsi per un passato
che non puoi cambiare, invece di prendere tutto il bene che il presente ti
offre." ()

 pagina o fa un refresh. Non solo quando chiude la finestra del browser.
Anche questo già lo sapevo, infatti ho già aggirato il problema mappando ciò
che fa l'utente, quindi so se cambia pagina, se preme F5, se effettua il
reload ecc ecc.
Il mio problema è che se clicco la "x" per chiudere, avviene l'evento
"onunload", qui utilizzo l'istruzione event.returnValue per la conferma, ma
se l'utente scheglie "Si" n viene generato l'evento "onunload" ...
In pratica devo aprire la pop-up solo ed esclusivamente quando viene premuto
"Si" nell'event.returnValue ....
Avete idee sul come fare ?
Grazie e ciao !

 opportune...
Ti ringrazio, ma qui ho un secondo problema: se la pagina contiene dei frame
come me la cavo ?
il tag <body> non è presente, dove butto il tuo codice ?
Quella "schifezza" che ho fatto io è supportata almeno da netscape 7 ?
Grazie !

 "Si" nell'event.returnValue ....
Non ho proprio afferrato il problema. Se l'utente chiude la finestra, e
gia' tu mi dici che "avviene l'evento onunload", che senso ha la frase
successiva "se l'utente sceglie 'Si' non viene generato l'evento 'onunload'
"??
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 Quella "schifezza" che ho fatto io è supportata almeno da netscape 7 ?
Dubito assai che Netscape supporti l'event for. In ogni caso, basta che tu
provi no?


 "??
Chiedo scusa ho fatto un pň di confusione : volevo dire che chiudendo con la
"x" avviene l'onbeforeunload (dove io lancio l'event.returnValue), ma
premendo "si" viene evitato l'onunload, dove io dovrei aprire la pop-up

 provi no?
Lo scarico e provo, è che col 6k è lunga .... ;-)

> Lo scarico e provo, è che col 6k è lunga .... ;-)
 ovviamente volevo scrivere 56k .... maledetta tastiera ...

 </script>
Mi vanno in errore le funzioni cosě ...
Tipo
<script type="text/javascript">
    onkeypress=function()
    function(){
          variabile =  event.keyCode;
    }
</script>
mi dice che event non č corretto ... e la funzione parte direttamente, senza
che avenga l'evento onkeypress ... ?!?! boh ??!!

 premendo "si" viene evitato l'onunload, dove io dovrei aprire la pop-up
Mi sfugge ancora. Cos'e' che questa finestra chiede? E perche' non lo fai
direttamente nell'onunload questo check (tra l'altro cosi' e' piu'
compatibile anche con altri browser)?


 Lo scarico e provo, è che col 6k è lunga .... ;-)
Beh, puoi sempre comprare qualche rivista. :)


> Beh, puoi sempre comprare qualche rivista. :)
Per quello ci vuole tempo, risorsa che non ho (week-end a parte ...)
See ya!

 </script>
Zero, scusa ma non mi funziona questo codice, il browser lo interpreta prima
che le funzioni vengano lanciate, come se l'evento onunload accadesse
durante la lettura del codice ... es.
<script type="text/javascript">
alert("Codice eseguito all'unload del documento");
</script>
Why ?
Devo prima settare qualcosa ?
Un paio di script che eseguigo con l'orrido sistema del for="document"
event="" li ho eliminati inserendo il codice nel <body>, ma in un paio di
casi non posso perchè si tratta di script inseriti in una pagina senza
<body>, dove definisco i frame ... devo lanciare 2 funzioni, una
nell'onunload e una nel onkeydown... mi sapresti aiutare ?
Grazie mille di tutto !
Bye bye !

 compatibile anche con altri browser)?
Hai presente il messaggino "Il browser sta tentando di chiudere la
finestra.\n" + Messaggio inserito via codice da me + "\nContinuare?" e i due
pulsanti "Si", "No" ? Ecco, quella ...
Non la metto nell'onunload perchè temporaneamente era l'unico modo per
testare in modo molto generico un pò tutte le funzioni ... se avessi messo
questo messaggio di conferma nell'onunload e sucessivamente il codice per
aprire la pop-up accadrebbe che alla pressione del tasto "Si" il browser
chiude la finestra senza interpretare i javascript sucessivi ... quindi non
mi apre la pop-up ... io devo invece evitare che la pop-up venga lanciata se
l'utente annulla la chiusura, e lanciarla se la conferma ... sono riuscito
ad essere chiaro questa volta ? ;-)
Merçi !

 ad essere chiaro questa volta ? ;-)
Quest'ultima parte, si.. credo.
Insomma, come ho "isolato" nel tuo messaggio, tu vorresti eseguire del
codice solo se l'utente conferma la chiusura, e *non* se l'annulla. In
questo caso, ti basta usare gli eventi di IE in questo modo:
onbeforeunload=function(){event.returnValue = "do something";};
onunload=function(){alert("onunload fired")};
Vedrai che l'alert verra' invocato solo nel caso in cui la finestra venga
effettivamente chiusa.


 effettivamente chiusa.
Ok, ora funziona perfettamente, grazie mille dei consigli e della pazienza !
Ciao !