PDA

View Full Version : [HTML] onUnload


Naruto83
10-08-2006, 15:38
L'evento onUnload viene attivato alla chiusura della pagina...ho scritto questo codice:

<body onUnload="window.open('Logout.php')">

ma la pagina Logout.php non viene richiamata, qualcuno sa il perchè? grazie

anonimizzato
10-08-2006, 16:18
Se stai scrivendo la pagina in XHTML metti il nome della funzione tutto in minuscolo: onunload

Scommeto che non ti funziona su Firefox vero?

Se provi con IE dovrebbe andare, il fatto è che FireFox incorpora un meccanismo che blocca automaticamente la generazione di nuove finestre senza che vi sia stato un input cosciente dell'utente come il click su un link.

Naruto83
10-08-2006, 16:43
Quindi per attivare lo script php alla chiusura della pagina c'è qualche altra soluzione...grazie

anonimizzato
10-08-2006, 17:58
Tu cosa vorresti fare di preciso, forse esiste una soluzione migliore e più elegante al problema. ;)

Naruto83
10-08-2006, 18:49
Io ho gli utenti che hanno fatto il Login in un file di testo quindi alla chiusura della pagina, dovrei eliminarne il nome tramite il php......poi ho anche un'altro problema la lista dei nomi che hanno fatto il login, sono in un iframe, quando un altro utente fa il login lo aggiungo nel file, però per farlo visualizzare agli utenti già connessi, dovrei usare il tag refresh, per far comparire la nuova lista, questio metodo è schiffoso, perchè ogni volta che fa il refresh si vede la freccina con la clessidra ed è brutissimo...se hai delle soluzioni + eleganti te ne sarei grato...ciao :p

Naruto83
10-08-2006, 19:12
Poi non capisco perchè con questo non va:

<body onUnLoad="window.open('Logout.php');">

mentre con questo si:

<body onUnLoad="alert('Ciao');">

andbin
10-08-2006, 19:43
Poi non capisco perchè con questo non va:

<body onUnLoad="window.open('Logout.php');">

mentre con questo si:

<body onUnLoad="alert('Ciao');">Se il tuo browser ha un sistema di blocco dei popup, window.open non apre la finestra. ;)

Si può fare un test:
var new_win = window.open ( ....... );

if (new_win == null || typeof (new_win) == "undefined" || typeof (new_win.closed) == "undefined")
alert ("POPUP Disabilitati");
else
alert ("POPUP Abilitati");

Naruto83
10-08-2006, 19:54
e vero :doh: , che idiota, non ci pensavo

loris_p
10-08-2006, 21:32
non garantisco che funzioni ma forse questo metodo non tenta forzatamente di aprire una nuova finestra, ma solo di fare un redirect, il che potrebbe risolvere il problema della non riuscita apertura dello script:
window.location('<script>')
prova e sappimi dire

Naruto83
10-08-2006, 23:31
Ho provato ma non funziona...forse perchè non puo caricarlo nella stessa pagina dato che è stata chiusa... :D

Naruto83
10-08-2006, 23:32
cmq grazie lo stesso, se hai altre soluzioni... :help:

loris_p
10-08-2006, 23:43
attenzione però :nonsifa: :nonsifa: :nonsifa: :nonsifa:
pensavo giusto adesso che questo sistema non è molto corretto proprio in linea di principio..
se ho capito bene il tuo programma tiene una sorta di "log" degli utenti loggati, i quali quando si sloggano distruggono la sessione loggata nel tuo log chiamando quello script..
non va bene :nonsifa: :nonsifa: :nonsifa: :nonsifa:
e ti spiego il perché:
essendo il javascript un linguaggio client side, esso è adatto per operazioni da eseguire prima dell'invio di dati al server (classico esempio il controllo dei campi di un form) oppure per task da svolgere limitatamente al browser stesso..ma qui tu parli di interagire direttamente tramite JS verso il server, questo potrebbe dare luogo ad un problemone: se l'utente ha JS disabilitato (cosa non così assurda di questi tempi :) ) si verifica un'incoerenza tra il tuo log file e gli utenti realmente connessi..il che non è simpatico, visto che neanche il tag <noscript> non ti verrebbe molto in aiuto

Naruto83
11-08-2006, 10:13
Ma infatti, javascript doveva solo richiamare la pagina php che sloggava, alla chiusura della pagina

loris_p
11-08-2006, 10:48
si ma se uno JS non ce l'ha quella pagina non viene mai chiamata, no? ;)

anonimizzato
11-08-2006, 11:13
e vero :doh: , che idiota, non ci pensavo

Ma scusa non ti avevo scritto sopra :mbe:

Naruto83
11-08-2006, 11:45
Scusa Sgurbat...Allora l'unica soluzione, è un tasto "Logout" ( schiffoso) :cry:

Naruto83
11-08-2006, 11:50
cmq tutto il mio lavoro, è in rete, se qualcuno lo volesse vedere, e magari darmi qualche consiglio, vi sarei enormemente grato:

http://narutogdr.altervista.org/

loris_p
11-08-2006, 12:35
a parte IMHO non essere il tasto logout schifoso, cmq non è la panacea di tutti i mali, perché rischieresti cmq che se l'utente non clicca logout ma la x per chiudere la finestra, ti si presenta nuovamente un'incoerenza di dati.. :muro: :muro: :muro:

thebol
11-08-2006, 13:29
ma legarti alla sessione, e impostare un timeout per quella?(cosi saresti sicuro che dopo n tempo si slogga da sola. cmq il tasto logout o il js logout o quello che vuoi lo puoi sempre lasciare.

Naruto83
11-08-2006, 19:57
Ho trovato una soluzione.... :D ...grazie ha chi mi ha parlato del timeout.....ecco cosa devo fare.... uno script php con un time out in ogni host di 5 sec, che quando scade lo script, aggiorna il file txt con il nome,il tempo scaduto e quando il successivo timeout che verra aggiornato ogni 5 sec, e nel mentre fa anche il controllo degli altri utenti, se controlla se ad un utente non è stato cambiato il tempo dopo 15 secondi è sicuro che è scollegato, e viene cancellato...che ne dite