1

browser's close eventここで、ウェブサイトからユーザーを作成することを検出するために書いた以下のコードで問題に直面していますlogged out

しかし、残念ながら、このイベントも発生しRefreshます:(。

Window.addWindowClosingHandler(new Window.ClosingHandler() {
    public void onWindowClosing(Window.ClosingEvent closingEvent) {
        closingEvent.setMessage("Do you really want to close the page?");
    }
});

はい、 CloseHandler で GWT 検出ブラウザーの更新を実行しました

しかし、そこには肯定的な結果は見つかりませんでした。

GWTの Window.ClosingEventクラス API によると:

Fired just before the browser window closes or navigates to a different site.

しかし、私たちが検出できるという希望はまだありますbrowser refresh

誰でもこれに関するヒントを与えることができますか?

4

1 に答える 1

4

Window.ClosingEventが呼び出されて更新するのか、ブラウザを閉じるのかを知ることはできません。ただし、問題がブラウザが閉じられたかどうかの検出のみである場合は、セッション Cookie を使用できます。

これは、役立つユーティリティ クラスの 1 つです。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;
    }
}
于 2013-02-15T20:48:28.140 に答える