2010-05-09 267 views
6

例如當前頁面是www.google.com。 但我在地址欄中輸入了不同的網站地址並單擊。該網站已完全 GWT代碼。GWT後退按鈕瀏覽器

但我喜歡回到www.google.com的上一頁。 所以我點擊了瀏覽器的返回按鈕。但是我怎樣才能從當前的 GWT代碼中獲得後退按鈕的事件。我可以在當前頁面的GWT中設置任何後臺事件處理程序嗎? 向後者通知提醒按鈕被按下的人。

GWT有沒有解決方案?

回答

1

您可以實現HistoryListener接口:每次點擊後退和前進按鈕時,您的課程的方法onHistoryChanged將被調用(使用String令牌)。然後,您可以與類,例如History進行交互。一個back()靜態方法「回去」。不過,我不完全確定它是否會在 GWT開始之前一直回到(但肯定值得嘗試;-)。

+0

'HistoryListener'和一般*監聽器不推薦使用GWT 1.6 - 你應該使用相應的Handlers(在這種情況下它是一個'ValueChangeHandler',它可能不如'HistoryHandler'那麼明顯)。 – 2010-05-09 19:51:57

5

+1給Igor和Alex。下面是一些代碼,你可以使用,如果你想使用ClosingHandler:

Window.addWindowClosingHandler(new Window.ClosingHandler() { 

     @Override 
     public void onWindowClosing(final ClosingEvent event) { 
      event.setMessage("Don't you think my site is awesome?"); 
     } 
    }); 

從ClosingHandler.onWindowClosing()的Javadoc中的一些信息:

/* Fired just before the browser window closes or navigates to a different 
    * site. No user-interface may be displayed during shutdown. */ 
0

試試這個它會工作

Event.addNativePreviewHandler(new Event.NativePreviewHandler() { 

     @Override 
     public void onPreviewNativeEvent(final NativePreviewEvent event) { 
      if (event.getTypeInt() == Event.ONKEYDOWN) { 
       if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_BACKSPACE) { 
        Element element = Element.as(event.getNativeEvent().getEventTarget()); 

        String tagName = element.getTagName(); 

        System.out.println(tagName); 

        // Add checks for other input controls 
        if (!tagName.equalsIgnoreCase("INPUT") 
           && !tagName.equalsIgnoreCase("TEXTAREA")) { 

         boolean result = Window.confirm("Are you sure?"); 
         if (!result) { 
          event.cancel(); 
         } 
        } 
       } 
      } 
     } 
    }); 
0

你也可以使用這個本地代碼

public native void call()/*-{ 

    $wnd.onkeydown = GetChar; 

    function GetChar (event) 
    { 
     var key = event.keyCode; 

     var bb = event.target.nodeName; 

     if(key==8 && bb=="BODY")//checking keyCode of key for backspace 
       { 
        var x= window.confirm("Are you sureyou want to leave the page"); 

        if (x==true) 
          { 
           window.history.back(); 
          } 
        else if(x==false) 
          { 

           return false; 
          } 
       } 
     }     
}-*/; 
+0

這些都是由用戶按下後退按鍵。有什麼方法提示用戶瀏覽器後退按鈕..? – 2014-04-26 06:35:43