Discussione:
Intercettare Chiusura Browser
(troppo vecchio per rispondere)
paolo
2005-06-01 08:22:04 UTC
Permalink
E' possibile intercettare la chiusura di una finestra di explorer ?? cioè
quando viene clikkata la "X" ?? L'evento "onUnload" purtroppo nn è
sufficiente.
Grazie a tutti
Christian Paparelli
2005-06-01 09:33:05 UTC
Permalink
Post by paolo
E' possibile intercettare la chiusura di una finestra di explorer ??
si
Post by paolo
cioè quando viene clikkata la "X" ??
si con onUnload di javascript
Post by paolo
L'evento "onUnload" purtroppo nn è sufficiente.
e come mai??
--
Christian Paparelli
http://www.ithost.ch
Raffaele Rialdi [MVP]
2005-06-01 09:54:34 UTC
Permalink
Post by paolo
E' possibile intercettare la chiusura di una finestra di explorer ??
cioè quando viene clikkata la "X" ?? L'evento "onUnload" purtroppo nn
è sufficiente.
Se ti serve per avvisare il server, il consiglio è di non usare mai questo
sistema. Il motivo è semplice: hai a che fare con httpo che è un protocollo
disconnesso per sua natura e quindi ad ogni get/post il browser ha finito le
sue faccende con il server che nulla può più sapere del client.
Il browser può crashare, il client può tagliare il cavo di rete, insomma
tutte cose per cui unload è assolutamente inutile.

Inoltre, come hai già notato, unload arriva per mille altre questioni e
quindi non è il modo giusto di procedere.
Sono io stesso, in questo thread:
http://groups-beta.google.com/group/microsoft.public.scripting.jscript/msg/e92951855e6fdfcb?hl=en
a precisare che il codice che ho postato (che usa unload per vedere la
chiusura del browser) *non* va usato per avvisare il lato server.

Le due alternative sono:
1. usare xmlhttp per fare polling regolarmente sul server con il minimo
traffico (così come xmlhttp ti permette) sotto timer javascript.
2. affidarti alla session_end (sempre che sia disponibile nel tuo caso)
--
Raffaele Rialdi
Roadshow developer security ... adesso si va a Bologna e Bari
http://www.microsoft.com/italy/msdn/eventi/developer/securitytour.mspx

Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://blogs.ugidotnet.org/raffaele
paolo
2005-06-01 10:22:02 UTC
Permalink
Innanzitutto grazie x la risposta!!
Allora il mio problema è il seguente ...
spero di riuscire a spiegarlo in poche righe :->

In una pagina ASP ho un form. Al termine della sua compilazione parte un
popup che controlla la correttezza dei dati inseriti. Se tutto è ok
all'interno della popup viene mostrato un bottone x il salvataggio dei dati.
L'operazione viene eseguita sempre all'interno della popup chiamando pero' un
altra pagina (qua parte unload), specifica x il salvataggio.Ora per evitare
che l'utente ritorni nel form (nella opener) e faccia casini(es. lanciando un
altro salvataggio ... cambiando dati ... etc) ho cercato di realizzare un
popup modale giocando sugli eventi focus e blur della pagina padre e
salvandomi in una variabile la window restituita dalla "open" della popup (in
modo da controllare negli eventi se la pop è ancora viva o meno).Quindi
quando tutto il giro è finito devo avvisare il padre , ma questo nn è
possibile se l'utente clikka la "X" .
Spero di essermi spiegato !!
Grazie ancora a tutti !!
ciao
Post by Raffaele Rialdi [MVP]
Post by paolo
E' possibile intercettare la chiusura di una finestra di explorer ??
cioè quando viene clikkata la "X" ?? L'evento "onUnload" purtroppo nn
è sufficiente.
Se ti serve per avvisare il server, il consiglio è di non usare mai questo
sistema. Il motivo è semplice: hai a che fare con httpo che è un protocollo
disconnesso per sua natura e quindi ad ogni get/post il browser ha finito le
sue faccende con il server che nulla può più sapere del client.
Il browser può crashare, il client può tagliare il cavo di rete, insomma
tutte cose per cui unload è assolutamente inutile.
Inoltre, come hai già notato, unload arriva per mille altre questioni e
quindi non è il modo giusto di procedere.
http://groups-beta.google.com/group/microsoft.public.scripting.jscript/msg/e92951855e6fdfcb?hl=en
a precisare che il codice che ho postato (che usa unload per vedere la
chiusura del browser) *non* va usato per avvisare il lato server.
1. usare xmlhttp per fare polling regolarmente sul server con il minimo
traffico (così come xmlhttp ti permette) sotto timer javascript.
2. affidarti alla session_end (sempre che sia disponibile nel tuo caso)
--
Raffaele Rialdi
Roadshow developer security ... adesso si va a Bologna e Bari
http://www.microsoft.com/italy/msdn/eventi/developer/securitytour.mspx
Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://blogs.ugidotnet.org/raffaele
Raffaele Rialdi [MVP]
2005-06-01 14:10:46 UTC
Permalink
Post by paolo
In una pagina ASP ho un form. Al termine della sua compilazione parte
un popup che controlla la correttezza dei dati inseriti.
Come mai non fai la validazione sul lato server? Eviti questo vorticoso giro
di popup (che personalmente come utente non mi piace affatto) e realizzi
l'unica validazione veramente utile (se qualcuno simula una post con dati
finti e e non validi sul server, succede il pasticcio).
Ovviamente con asp.net è tutto più semplice ma questo è un altro discorso.
Post by paolo
Se tutto è ok
all'interno della popup viene mostrato un bottone x il salvataggio
dei dati. L'operazione viene eseguita sempre all'interno della popup
chiamando pero' un altra pagina (qua parte unload), specifica x il
salvataggio.Ora per evitare che l'utente ritorni nel form (nella
opener) e faccia casini(es. lanciando un altro salvataggio ...
cambiando dati ... etc) ho cercato di realizzare un popup modale
giocando sugli eventi focus e blur della pagina padre e salvandomi in
una variabile la window restituita dalla "open" della popup (in modo
da controllare negli eventi se la pop è ancora viva o meno).Quindi
quando tutto il giro è finito devo avvisare il padre , ma questo nn è
possibile se l'utente clikka la "X" .
Forse non ho capito bene, ma se il parent non esiste più dovresti avere null
come riferimento e quindi sapere se il parent esiste o meno.
Se ti serve solo evitare la chiusura, puoi usare onbeforeunload annullando
la chiusura del parent:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/events/onbeforeunload.asp
Post by paolo
Spero di essermi spiegato !!
Grazie ancora a tutti !!
Prego
--
Raffaele Rialdi
Roadshow developer security ... adesso si va a Bologna e Bari
http://www.microsoft.com/italy/msdn/eventi/developer/securitytour.mspx

Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://blogs.ugidotnet.org/raffaele
Loading...