Cách để làm điều đó là sử dụng số Window.addWindowClosingHandler
như @Carnell và @BillLyons cho biết. Nhưng tôi sử dụng một kỹ thuật bổ sung để phát hiện xem trình duyệt có bị đóng hay không nếu trang đó được truy cập lại (bằng cách làm mới hoặc điều hướng quay lại).
Sau đây là một lớp tiện ích có thể giúp bạn. Chỉ cần gọi các dòng bên dưới trong số onModuleLoad
của bạn để kiểm tra.
Việc sử dụng ví dụ:
@Override
public void onModuleLoad() {
if (BrowserCloseDetector.get().wasClosed()) {
GWT.log("Browser was closed.");
}
else {
GWT.log("Refreshing or returning from another page.");
}
}
Lớp tiện ích:
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;
}
}
Nguồn
2013-02-21 00:28:01
Duplicate của câu hỏi này. http://stackoverflow.com/questions/875380/how-to-tell-the-difference-between-a-page-refresh-and-closing-a-page –
Câu hỏi đó không trùng lặp với câu hỏi này. –
Câu trả lời không trả lời câu hỏi này mặc dù - bạn không thể biết khi nào người dùng đã ngừng sử dụng trang web của bạn. Việc gần nhất bạn có thể làm là cho biết khi nào người dùng chưa gửi yêu cầu mới đến trang web trong một khoảng thời gian nhất định. – Quentin