Events GWT WindowClosingHandler在浏览器刷新时也会触发

Events GWT WindowClosingHandler在浏览器刷新时也会触发,events,gwt,user-interface,browser,Events,Gwt,User Interface,Browser,下面的代码是我用来检测浏览器关闭事件的,以使用户从网站注销的 但不幸的是,此事件也会在Refresh上触发:( Window.addWindowClosingHandler(新建Window.ClosingHandler()){ WindowClosing上的公共无效(Window.ClosingEvent ClosingEvent){ setMessage(“您真的要关闭页面吗?”); } }); 是的,我通过了 但我没有发现任何积极的结果 根据GWT类api: Fired just be

下面的代码是我用来检测
浏览器关闭事件的
,以使用户
从网站注销的

但不幸的是,此事件也会在
Refresh
上触发:(

Window.addWindowClosingHandler(新建Window.ClosingHandler()){
WindowClosing上的公共无效(Window.ClosingEvent ClosingEvent){
setMessage(“您真的要关闭页面吗?”);
}
});
是的,我通过了

但我没有发现任何积极的结果

根据GWT类api:

Fired just before the browser window closes or navigates to a different site.
但我仍然希望我们能够检测到
浏览器刷新


有人能给出提示吗?

不可能知道是否调用了
窗口.ClosingEvent
来刷新或关闭浏览器。但是,如果您的问题只是检测浏览器是否已关闭,您可以使用会话cookie

这里有一个实用程序类可以帮助您。只需在
onModuleLoad
中调用下面的行即可进行测试

测试线

@Override
public void onModuleLoad() {
    if (BrowserCloseDetector.get().wasClosed()) {
        GWT.log("Browser was closed.");
    }
    else {
        GWT.log("Refreshing or returning from another page.");
    }
}
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;
    }
}
实用程序类

@Override
public void onModuleLoad() {
    if (BrowserCloseDetector.get().wasClosed()) {
        GWT.log("Browser was closed.");
    }
    else {
        GWT.log("Refreshing or returning from another page.");
    }
}
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;
    }
}

无法知道是否正在调用
窗口.ClosingEvent
以刷新或关闭浏览器。但是,如果您的问题只是检测浏览器是否已关闭,则可以使用会话cookie

这里有一个实用程序类可以帮助您。只需在
onModuleLoad
中调用下面的行即可进行测试

测试线

@Override
public void onModuleLoad() {
    if (BrowserCloseDetector.get().wasClosed()) {
        GWT.log("Browser was closed.");
    }
    else {
        GWT.log("Refreshing or returning from another page.");
    }
}
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;
    }
}
实用程序类

@Override
public void onModuleLoad() {
    if (BrowserCloseDetector.get().wasClosed()) {
        GWT.log("Browser was closed.");
    }
    else {
        GWT.log("Refreshing or returning from another page.");
    }
}
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;
    }
}

@这个密码确实有效。也许不是你想要的,对吧?@这个密码确实有效。也许不是你想要的,对吧?