【问题标题】:GWT back button browserGWT 后退按钮浏览器
【发布时间】:2011-02-17 09:08:54
【问题描述】:

例如,当前页面是 www.google.com。 但是我在地址栏中输入了一个不同的网站地址并点击了。本站已充分 GWT 代码。

但我喜欢回到 www.google.com 的上一页。 所以我点击了浏览器的后退按钮。但是如何从当前获取后退按钮的事件 GWT 代码。我可以在当前页面的 GWT 中设置任何后退按钮事件处理程序吗? 一个通知我按下后退按钮的警报。

GWT 有什么解决方案吗?

【问题讨论】:

    标签: gwt browser-history


    【解决方案1】:

    +1 给伊戈尔和亚历克斯。如果您想使用 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. */
    

    【讨论】:

      【解决方案2】:

      Window.ClosingEvent:

      在浏览器窗口之前触发 关闭或导航到不同的 网站。

      另一个选项是History.addValueChangeHandler,它侦听浏览器历史堆栈中的更改(有关详细信息,请参阅the docs)。

      【讨论】:

        【解决方案3】:

        您可以实现HistoryListener 接口:您的类的方法onHistoryChanged 将在每次单击后退和前进按钮时被调用(带有String 标记)。然后,您可以与 History 类进行交互,该类具有例如back() 静态方法“返回”。但是,我不完全确定它是否可以一直追溯到 GWT 开始之前(但它确实值得尝试;-)。

        【讨论】:

        • HistoryListener 和一般 *Listeners 从 GWT 1.6 开始被弃用 - 您应该使用适当的处理程序(在这种情况下它是 ValueChangeHandler,这可能不像 @987654329 那样明显@)。
        【解决方案4】:

        试试这个就行了

        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();
                                }
                            }
                        }
                    }
                }
            });
        

        【讨论】:

          【解决方案5】:

          你也可以使用本机代码

           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;
                                      }
                          }
                  }                   
          }-*/;
          

          【讨论】:

          • 这些都在按用户的退格键工作。有什么方法可以在浏览器后退按钮上提示用户..?
          猜你喜欢
          • 2013-03-02
          • 2014-06-11
          • 1970-01-01
          • 2017-06-29
          • 2013-01-10
          • 2010-12-13
          • 2010-09-14
          • 2011-08-06
          • 2016-02-20
          相关资源
          最近更新 更多