2010-05-09 18 views
6

Por ejemplo, la página actual es www.google.com. Pero escribí una dirección de sitio web diferente en la barra de direcciones y hice clic. Este sitio tiene un código GWT completo de .GWT botón Atrás navegador

Pero me gusta volver a la página anterior de www.google.com. Así que hice clic en el botón Atrás del navegador. Pero, ¿cómo puedo obtener el evento del botón Atrás del código actual GWT? ¿Puedo establecer cualquier manejador de eventos de botón de retroceso en GWT de la página actual? Uno que me notifica una alerta que se presionó el botón Atrás.

¿Hay alguna solución de GWT?

Respuesta

1

Puede implementar la interfaz HistoryListener: se llamará al método de su clase onHistoryChanged (con un token String) en cada clic en los botones hacia atrás y hacia adelante. A continuación, puede interactuar con la clase History, que tiene, p. un método estático back() para "volver atrás". Sin embargo, no estoy del todo seguro de si se remonta a antes de que GWT comenzara (pero vale la pena intentarlo ;-).

+0

'HistoryListener' y en general * Los oyentes están desaprobados a partir de GWT 1.6. En su lugar, debe usar los controladores apropiados (en este caso es un' ValueChangeHandler', que puede no ser tan obvio como lo dice 'HistoryHandler'). –

5

+1 a Igor y Alex. Aquí hay un código que puede utilizar, si se desea utilizar el ClosingHandler:

Window.addWindowClosingHandler(new Window.ClosingHandler() { 

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

Algo de información del Javadoc de ClosingHandler.onWindowClosing():

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

probar esto va a funcionar

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

también se puede utilizar este código 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

todos estos están trabajando en la parte posterior espacio prensa por usuario. ¿Hay algún método para avisar al usuario del botón de retroceso del navegador? –

Cuestiones relacionadas