Il modo per farlo è utilizzare Window.addWindowClosingHandler
come @Carnell e @BillLyons. Ma io uso una tecnica aggiuntiva per rilevare se il browser è stato chiuso o se la pagina viene nuovamente visitata (tramite aggiornamento o navigazione indietro).
Di seguito è disponibile una classe di utilità che può essere di aiuto. Basta chiamare le linee sottostanti nel tuo onModuleLoad
per testare.
L'esempio uso:
@Override
public void onModuleLoad() {
if (BrowserCloseDetector.get().wasClosed()) {
GWT.log("Browser was closed.");
}
else {
GWT.log("Refreshing or returning from another page.");
}
}
La classe di utilità:
import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.Window;
public class BrowserCloseDetector {
private static final String COOKIE = "detector";
private static BrowserCloseDetector instance;
private BrowserCloseDetector() {
Window.addWindowClosingHandler(new Window.ClosingHandler() {
public void onWindowClosing(Window.ClosingEvent closingEvent) {
Cookies.setCookie(COOKIE, "");
}
});
}
public static BrowserCloseDetector get() {
return (instance == null) ? instance = new BrowserCloseDetector() : instance;
}
public boolean wasClosed() {
return Cookies.getCookie(COOKIE) == null;
}
}
fonte
2013-02-21 00:28:01
duplicato di questo argomento. http://stackoverflow.com/questions/875380/how-to-tell-the-difference-obetween-a-page-refresh-and-closing-a-page –
Questa domanda non è un duplicato di questo. –
La risposta risponde a questa domanda - non è possibile sapere quando l'utente ha smesso di usare il tuo sito. Il più vicino che puoi fare è dire quando l'utente non ha inviato una nuova richiesta al sito per un dato periodo di tempo. – Quentin