簡體   English   中英

GWT后退按鈕瀏覽器

[英]GWT back button browser

例如,當前頁面是www.google.com。 但我在地址欄中輸入了一個不同的網址,然后點擊了。 該站點具有完整的GWT代碼。

但我想回到www.google.com的上一頁。 所以我點擊了瀏覽器的后退按鈕。但是如何從當前的GWT代碼中獲取后退按鈕的事件。 我可以在當前頁面的GWT中設置任何后退事件處理程序嗎? 一個通知我按下后退按鈕的警報。

GWT有什么解決方案嗎?

Window.ClosingEvent

在瀏覽器窗口關閉或導航到其他站點之前觸發。

另一個選項是History.addValueChangeHandler ,它偵聽瀏覽器歷史堆棧中的更改(有關詳細信息,請參閱文檔 )。

給Igor和Alex +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. */

您可以實現HistoryListener接口:每次單擊后退和前進按鈕時,將調用類的onHistoryChanged方法(使用String標記)。 然后,您可以與History類進行交互,該類具有例如“返回”的back()靜態方法。 但是,我不確定它是否會 GWT開始之前一直回到(但它確實值得嘗試;-)。

試試這個會起作用

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

您也可以使用此本機代碼

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM