2010-05-09 198 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