2013-02-15 214 views
1

在這裏,我面臨的問題與我寫下來的代碼檢測browser's close event使用戶logged out從網站。GWT WindowClosingHandler刷新瀏覽器刷新

但不幸的是在Refresh此事件觸發太:(。

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

是的,我通過 GWT detect browser refresh in CloseHandler

走了,但我沒有發現任何積極的結果出現。

按GWT Window.ClosingEvent class api:

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

但我仍然希望能夠檢測到browser refresh

任何人都可以提供這方面的提示嗎?

回答

4

知道是否調用Window.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; 
    } 
} 
+0

謝謝你的餅乾hint.but不是爲我工作。 – 2013-02-16 21:27:55

+0

@TheSureshAtta代碼確實有效。也許不像你想要的,對吧? – 2013-02-21 00:15:15