PDA

Visualizza la versione completa : Chiusura pagina web


devil946
19-09-2020, 16:25
Salve a tutti è da qualche giorno che sto cercando in lungo e largo sul web e sui vari forum, materiale e codice per poter intercettare la chiusura di una pagina web. Lo sò benissimo che di materiale se ne trova molto in rte e che ci sono ampie discussioni sul tema, ma i codici che ho trovato non funzionano o malmeno solo in parte e di tutte le discussioni che ho trovato e letto nessuna porta ad un risultato concreto e funzionante.

In pratica quello che vorrei è molto semplice, l'utente dopo che si è loggato accede ad una pagina di menù, in questa pagina potrà effettuare delle azioni e trova anche il bottone di logout, ma come spesso accade molti cliccano sulla X in alto a destra e chiudono la pagina lasciando così la sessione aperta, quello che desidero è che se clicca sulla x e quindi intercettare l'evento onunload sulla pagina stessa, si attivi un codice javascript che rimandi ad una pagina dove eseguo del codice asp per azzerare un valore di un campo nel db.
Spero di essere stato abbastanza chiaro, vi inserisco il codice che ho provato ma che non funziona.


<head>
<script>
window.onunload = function()
{
document.getElementById('ciao').innerHTML = 'Boom!';
}
</script>
</head>
<body topmargin="15" bottommargin="15" bgcolor="#01461a"><p id="ciao"></p>

jabjoint
20-09-2020, 16:02
Salve a tutti è da qualche giorno che sto cercando in lungo e largo sul web e sui vari forum, materiale e codice per poter intercettare la chiusura di una pagina web. Lo sò benissimo che di materiale se ne trova molto in rte e che ci sono ampie discussioni sul tema, ma i codici che ho trovato non funzionano o malmeno solo in parte e di tutte le discussioni che ho trovato e letto nessuna porta ad un risultato concreto e funzionante.

In pratica quello che vorrei è molto semplice, l'utente dopo che si è loggato accede ad una pagina di menù, in questa pagina potrà effettuare delle azioni e trova anche il bottone di logout, ma come spesso accade molti cliccano sulla X in alto a destra e chiudono la pagina lasciando così la sessione aperta, quello che desidero è che se clicca sulla x e quindi intercettare l'evento onunload sulla pagina stessa, si attivi un codice javascript che rimandi ad una pagina dove eseguo del codice asp per azzerare un valore di un campo nel db.
Spero di essere stato abbastanza chiaro, vi inserisco il codice che ho provato ma che non funziona.


<head>
<script>
window.onunload = function()
{
document.getElementById('ciao').innerHTML = 'Boom!';
}
</script>
</head>
<body topmargin="15" bottommargin="15" bgcolor="#01461a"><p id="ciao"></p>


Prova inserendo onunload="alert(`addio`);" nel body.

devil946
21-09-2020, 09:31
Niente da fare, non si apre l'alert, ma avevo già provato: In effetti è giusto che non sia apra poichè ho chiuso la pagina quindi l'evento non si scatena o se si scatena si dovrebbe scatenare ma su una pagina già chiusa. Altre idee?

cavicchiandrea
24-09-2020, 20:51
Onbeforeunload https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload

devil946
25-09-2020, 10:41
Grazie Andrea, del tuo supporto ma, come lo inserisco nella mia pagina,e come lo richiamo?
Potresti farmi un banalissimi esempio.
Grazie

alka
25-09-2020, 11:19
molti cliccano sulla X in alto a destra e chiudono la pagina lasciando così la sessione aperta, quello che desidero è che se clicca sulla x e quindi intercettare l'evento onunload sulla pagina stessa, si attivi un codice javascript che rimandi ad una pagina dove eseguo del codice asp per azzerare un valore di un campo nel db.


Anche se non è la risposta al tuo problema, ti do ugualmente il mio consiglio: evita assolutamente di dover fare una cosa del genere.

Se il dato viene conservato dal server, significa che è presente un concetto di sessione, e pertanto qualora il browser non abbia più contatti per diversi minuti (configurabili) con il server, si può dare per scontato che la sessione sia stata chiusa e che l'utente abbia navigato altrove oppure chiuso il browser.

Tutti gli strumenti lato server gestiscono questa casistica e, alla scadenza della sessione, vanno a eliminare tutti i dati relativi ad essa.

Se invece ci troviamo in un ambito stateless, senza il concetto di sessione, non è nemmeno necessaria l'implementazione indicata qui sopra, poiché si possono memorizzare tutte le informazioni direttamente sul client e far sì che queste vengano automaticamente rimosse dal browser quando viene chiuso o il sito viene abbandonato.

Tutte le altre soluzioni sono ascrivibili ad "accrocchi" che non danno nemmeno garanzia del risultato, anche perché se chiudo il browser tu non puoi fattivamente navigare a un'altra pagina, o in certi casi potrebbe trattarsi anche di un browser mobile che non viene chiuso, o che si chiude forzatamente, impedendo qualsiasi ulteriore azione una volta che il sito è stato abbandonato.

Riassumendo, non vedo motivi validi o sensati per l'implementazione che stai cercando di fare. :stordita:

Ciao! :ciauz:

SoloWiFi
25-09-2020, 12:18
Un sistema c'è ed io lo utilizzo in una chat.
Lavorare a fullscreen
La X di chiusura non c'è e occorre premere esc su desktop oppure back su mobile.
In questo modo si toglie il fullscreen che è un evento intercettabile.
Di conseguenza si possono eseguire delle operazioni.

ciro78
25-09-2020, 13:43
assurdo solo pensare di forzare l'utente in questi modi. la strada di alka è quella giusta.

devil946
25-09-2020, 16:40
Ok io concordo in pieno con quello che dice Alka sul fatto di non costringere l'utente a fare certe cose o dover sottostare a certe restrizioni.
Ma allora come posso far in modo che se clicca sulla x la sua sessione e quindi tutte le variabili di sessione di conseguenza decadano?

ciro78
25-09-2020, 18:18
fallo lato server. un job che cancella la sessione se non ci sono attività da oltre 15 minuti...

Loading