3 messaggi dal 12 giugno 2017
Salve ragazzi, vi spiego subito il mio problema. Ho creato un progetto dove tutte le pagine sono associate ad una pagina master. Io avrei bisogno di gestire l'evento unload di una delle pagine, però per alcuni motivi devo farlo da hmtl, ma non so proprio come fare, considerando che non è presente il tag body nelle pagine associate alla pagina master. Quindi non so come fare per richiamare quel metodo. Ho provato anche con addhandler, e funziona, però mi blocca un timer che ho nella pagina, non so per quale motivo. Qualcuno può aiutarmi?
113 messaggi dal 09 febbraio 2017
Sotto ad asp net cè sempre un html, basta visualizzare il markup

Emanuel Pirovano
Web Developer
3 messaggi dal 12 giugno 2017
Sì, ma nelle pagine html associate ad una pagina master non c'è il tag body, ma solo due contentplaceholder, a cui non riesco ad associare gli eventi
10.161 messaggi dal 09 febbraio 2002
Contributi
Ciao Davide,
non fa nulla se non c'è il tag <body> perché puoi comunque gestire un suo evento usando javascript.


gestire l'evento unload di una delle pagine, però per alcuni motivi devo farlo da hmtl

Ok, da quanto capisco, hai bisogno di impedire all'utente di lasciare la pagina quando prova a navigare altrove. Lo vuoi fare per ricordargli che ci sono dei dati non salvati? Se sì, dovresti gestire l'evento beforeUnload dell'oggetto window. Metti questo tag <script> nella tua pagina aspx, all'interno del controllo asp:Content.
<script>
window.onbeforeunload = function(e) {
  var dialogText = 'Attenzione, vuoi davvero uscire da questa pagina?';
  e.returnValue = dialogText;
  return dialogText;
};
</script>


Questo codice si limiterà a visualizzare un avviso quando un utente prova a lasciare la pagina. Poi, bisogna capire che azione vuoi fare tu in quella situazione. Spiega bene bene lo scenario in cui ti trovi, così sarà più facile darti consigli precisi.

Ciao,
Moreno
Modificato da BrightSoul il 12 giugno 2017 18.27 -

Enjoy learning and just keep making
3 messaggi dal 12 giugno 2017
Grazie mille, allora il mio problema è questo: Sono un maturando e sto portando come progetto d'esame una chat... Riguardo la chat, l'ho già sviluppata in c# e quindi credo non ci siano problemi a portarla in aspx. I problemi sono nati quando ho iniziato a gestire anche gli utenti, quelli online e offline. Poichè, mettere online un utente è semplice, basta fare la query nel page load, il difficile viene quando deve essere messo offline. Avevo pensato di farlo utilizzando la variabile di sessione, ma essa scade solo se viene chiuso il browser, alla chiusura della pagina resta ancora attiva... Quindi, la soluzione che ho pensato è quella di aprire un'altra pagina, quella di logout, all'unload di quella corrente, per comodità e per non dare all'utente la scocciatura di chiudere un'altra pagina dopo aver chiuso la chat ho impostato tramite una funzione javascript che questa pagina si apra in un div che ho inserito nella mia "home"... quindi all'unload devo aprire la pagina logout in quel div, cosa che ero già riuscito a fare e che ora non so per quale assurdo motivo non funziona più... E praticamente lo scenario è questo.
10.161 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Quindi, la soluzione che ho pensato è quella di aprire un'altra pagina, quella di logout, all'unload di quella corrente

Uhm, non è molto carino. Quando l'utente vuole chiudere, vuole chiudere. Non escludo che, se non sta funzionando, sia proprio il browser ad impedirti di aprire una nuova pagina in rispetto della volontà dell'utente.
Considera questo: le necessità degli utenti vengono prima di tutto e non devono essere messe in secondo piano da esigenze puramente tecniche.

Io ti direi di usare questo approccio:
  • Da una parte metti un bottone "Esci". Se l'utente è abbastanza gentile da cliccartelo, allora saprai immediatamente che si è disconnesso dalla chat. Poi chiuderà il browser.
  • Se l'utente invece chiude il browser direttamente, non puoi farci molto. Puoi provare ad inviare una richiesta dalla funzione javascript che gestisce l'evento onbeforeunload e sperare che arrivi al server. Se arriva, anche in questo caso saprai subito che l'utente si è voluto disconnettere. Se non ti arriva, lo puoi considerare disconnesso se sono trascorsi tot minuti dall'ultimo messaggio che ha inviato. Eventualmente, mentre è connesso, puoi invocare una funzione javascript ad intervalli regolari (es. ogni 20 secondi) per comunicare al server che la pagina web è ancora aperta e che quindi l'utente è da considerarsi connesso. Quando questo "ping" non ti arriva più (es. passa 1 minuto), allora puoi considerare l'utente disconnesso.


Come, usare ASP.NET WebForms da solo non è proprio indicato per realizzare una chat. Lo stai usando perché è stato argomento di lezione a scuola?
Le applicazioni in tempo reale come una chat ottengono i migliori benefici da ASP.NET SignalR. Per esempio, ti dà un evento OnDisconnected che si avvale di tutto quello che ti ho descritto senza che tu scriva una riga di codice.
https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/handling-connection-lifetime-events#clientdisconnect

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.