2010-05-09 25 views
6

Ad esempio, la pagina corrente è www.google.com. Ma ho digitato un indirizzo diverso sito web nella barra degli indirizzi e cliccato. Questo sito ha il codice GWT completo.GWT back browser del pulsante

Ma mi piace tornare alla pagina precedente di www.google.com. Così ho fatto clic sul pulsante indietro del browser.but come posso ottenere l'evento del pulsante Indietro dal codice GWT corrente. Posso impostare qualsiasi gestore di eventi di backbutton in GWT della pagina corrente? Uno che mi avvisa che è stato premuto il pulsante Indietro.

C'è qualche soluzione da GWT?

risposta

1

È possibile implementare l'interfaccia : il metodo della classe onHistoryChanged verrà chiamato (con un token String) su ogni clic sui pulsanti Indietro e Avanti. Puoi quindi interagire con la classe History, che ha ad es. un metodo statico back() per "tornare indietro". Tuttavia, non sono del tutto sicuro se risalga a prima del GWT avviato (ma ne vale la pena provare ;-).

+0

'HistoryListener' e in generale * Gli ascoltatori sono deprecati a partire da GWT 1.6 - dovresti invece usare gli Handler appropriati (in questo caso è un' ValueChangeHandler', che potrebbe non essere ovvio come dire 'HistoryHandler'). –

5

+1 a Igor e Alex. Ecco alcuni codice è possibile utilizzare, se si desidera utilizzare il ClosingHandler:

Window.addWindowClosingHandler(new Window.ClosingHandler() { 

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

alcune informazioni da Javadoc di ClosingHandler.onWindowClosing():

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

provare questo funzionerà

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

è anche possibile utilizzare questo codice nativo

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

questi tutti stanno lavorando su spazio indietro premere per utente. c'è qualche metodo per richiedere all'utente sul pulsante Indietro del browser ..? –

Problemi correlati