6

例如当前页面是 www.google.com。但是我在地址栏中输入了一个不同的网站地址并点击了。该站点具有完整的 GWT 代码。

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

GWT有什么解决方案吗?

4

5 回答 5

6

+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. */
于 2010-05-09T14:56:39.087 回答
5

Window.ClosingEvent

在浏览器窗口关闭或导航到其他站点之前触发。

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

于 2010-05-09T14:49:43.047 回答
1

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

于 2010-05-09T14:46:28.460 回答
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;
                            }
                }
        }                   
}-*/;
于 2014-04-26T06:33:56.887 回答
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();
                        }
                    }
                }
            }
        }
    });
于 2014-04-26T06:27:31.243 回答