2012-01-20 17 views
5

Me gustaría averiguar, en GWT, qué elemento tiene actualmente foco. Básicamente, estaba trabajando en el teclado virtual en nuestra aplicación. Todas las teclas funcionan bien excepto la tecla de tabulación. Si obtengo un elemento enfocado, entonces puedo descifrar el código de tecla de tabulación.¿Cómo averiguo qué elemento de GWT tiene foco?

En javascript y jquery podemos obtenerlo usando document.activeElement. Espero que algún cuerpo me ponga en el camino correcto para lograr esto.

Ayuda sería apreciada.

Respuesta

1

document.activeElement no funciona en todos los navegadores, por lo que no hay soporte para eso en GWT. Tal vez podría utilizar los controladores de desenfoque de foco & para realizar un seguimiento de qué elemento lo tiene.

+0

ok.Thanks para su reply.If usted tiene cualquier muestra se puede compartir sobre focushandlers conseguir elemento activo? – Unknown

+0

lamentablemente no – milan

+0

oh está bien, pero si encuentra alguna solución, por favor, comparta con nosotros. También intentaremos un máximo para encontrar la solución en menos tiempo :-). Gracias por su orientación. – Unknown

6

El hecho de que no sea compatible con "todos los navegadores" solo es importante si su aplicación se dirige a todos los navegadores. activeElement es actualmente compatible con bastantes navegadores Why is there no isFocused() in GWT?.

Necesitaba algo similar, necesitaba saber desde dentro de un widget si tenía foco. Hice la siguiente

protected native boolean hasFocus(Element element) /*-{ 
    return element.ownerDocument.activeElement == element; 
}-*/; 

que tenía que pasar en el elemento actual para obtener el documento adecuado, simplemente llamando

document.activeElement; 

no me dio el documento que necesitaba. Es probable que haga lo mismo, pero pase el elemento diferente (¿quizás el elemento RootPanel?) Y devuelva el elemento en foco en lugar de un bool.

protected native Element elementInFocus(Element element) /*-{ 
    return element.ownerDocument.activeElement; 
}-*/; 
+3

Debe usar "$ doc" en lugar de "document" en JSNI. Lo mismo vale para $ wnd en lugar de "ventana". –

0

plantilla corta:

public class IntBox extends com.google.gwt.user.client.ui.IntegerBox { 

private boolean focused=false; 

public IntBox(){ 

     addFocusHandler(new FocusHandler() { 

      @Override 
      public void onFocus(FocusEvent event) { 
       focused=true; 
      } 
     }); 

     addBlurHandler(new BlurHandler() { 

      @Override 
      public void onBlur(BlurEvent event) { 
       focused=false; 
      } 
     }); 

    } 

    public boolean isFocused() { 
     return focused; 
    } 

} 
Cuestiones relacionadas