En un escenario de programación, necesitaba verificar si mi cuadro de texto GWT estaba enfocado o no. Terminé agregando un booleano y un par de Focus & BlurHandler para mantener manualmente el estado de enfoque que me hace preguntarme por qué no hay tal método que devuelve si un componente enfocable se centra en gwt?¿Por qué no hay isFocused() en GWT?
Respuesta
Porque no había ninguna forma de navegador cruzado de hacerlo hasta hace unos años (Firefox 3, Safari 4, para apuntar a los últimos jugadores en el juego con soporte agregado document.activeElement
).
GWT todavía es oficialmente compatible con [1] Safari 3 (creo que el soporte de Safari 2 ha quedado obsoleto) y tal vez incluso Firefox 2 (sin complemento DevMode, pero eso no significa que el navegador no sea compatible: Opera es compatible pero tampoco tiene DevMode), por lo que no es posible proporcionar una función que funcione en todos los navegadores admitidos.
Por último, pero no por ello menos importante, creo que nadie ha solicitado una mejora en el rastreador de problemas (al menos no encontré ninguno); y como dijiste, ya puedes hacerlo hoy usando FocusHandler/BlurHandler (que funciona en varios navegadores).
[1] http://code.google.com/webtoolkit/doc/latest/FAQ_GettingStarted.html#What_browsers_does_GWT_support? Creo que esa página está un poco desactualizada, ya que todavía incluye Firefox 1.0, cuyo soporte (user.agent = gecko, vs. gecko1_8) se ha eliminado en GWT 2.1.0, y no incluye IE9, cuyo soporte tiene se ha agregado en GWT 2.3.0, y por último pero no menos importante, creo que solo se admite la última versión de Opera, mientras que la lista habla de Opera 9.
Para obtener una vista más amplia de qué navegadores lo admiten, consulte, por ejemplo, MDN: https://developer.mozilla.org/en-US/docs/Web/API/document.activeElement Hoy parece que todos los navegadores principales lo admiten (IE 4+, Chrome 2+, etc.), por lo que es bastante seguro usarlo. – PhiLho
Para encontrar qué widget tiene foco, no sé si ya tienes solución Como un principiante a GWT, propongo mi solución para compartir:
Declarar ámbito privado en el objeto, como
Crear manejador de enfoque 'focusedWidget' para el widget, esto es TextBox clase. En el bloque OnFocus, simplemente asigne el widget a 'focusedWidget'. Puede agregar este tipo de evento a cada widget que se pueda enfocar. ! [paso 2] [2]
- Eso es todo. Cada widget que haya vinculado al evento de enfoque se establecerá en "widget enfocado" cada vez que se enfoque. Entonces podemos usar 'focusedWidget' para determinar qué widget actual está enfocado. ! [paso 3] [3]
Lo pruebo en JUnit
, ¡funciona! see image of snippet here Espero que ayuden.
esto es útil, pero también necesitará agregar controlador de desenfoque a cada elemento, para que no se detecte la situación de ningún elemento actualmente enfocado y el valor del widget enfocado se pueda establecer como nulo. – Joel
- 1. ¿Por qué hay tan pocas aplicaciones GWT de código abierto?
- 2. WPF Editable Combobox IsFocused problema
- 3. ¿Por qué no hay Dictionary.TrimExcess()?
- 4. ¿Por qué no hay strtoi en stdlib.h?
- 5. por qué no hay sizeof en java
- 6. ¿Por qué no hay ReverseEnumerator en C#?
- 7. ¿Por qué GWT no funciona sin? Gwt.codesvr = 127.0.0.1: 9997
- 8. ¿Por qué no hay palabra clave "no es" en C#?
- 9. ¿Por qué no hay UTF-24?
- 10. ¿Por qué no hay Xcode para Windows?
- 11. ¿Por qué no hay método Service.onStop?
- 12. ¿Por qué no hay impulso :: copy_on_write_ptr?
- 13. ¿Por qué no hay un String # shift()?
- 14. ¿Por qué no hay std :: stou?
- 15. ¿Por qué no hay un documento.createHTMLNode()?
- 16. ¿Por qué no hay llamadas al constructor?
- 17. ¿Por qué no hay List.skip y List.take?
- 18. ¿Por qué no hay boost :: filesystem :: move_file?
- 19. ¿Por qué no hay un método Convert.toFloat()?
- 20. En C#: ¿Por qué no hay 'Elemento' en System.Data.DataRow?
- 21. ¿Por qué hay CL_DEVICE_MAX_WORK_GROUP_SIZE?
- 22. ¿Por qué no hay un buen esquema/lisp en llvm?
- 23. ¿Por qué no hay función main() en vxWorks?
- 24. ¿Por qué no hay forma de deshacer "usar" en C++?
- 25. ¿Por qué no hay operadores || = o && = en C#?
- 26. ¿Por qué no hay una cola genérica sincronizada en .NET?
- 27. por qué no hay un método de eliminación en HttpWebResponse
- 28. ¿Por qué no hay interpolación de cadenas en Scala?
- 29. ¿Por qué no hay interfaces finales en Java?
- 30. ¿Por qué no hay una variable estática local en Java?
Nadie aquí puede responder esto. A menos que una de las personas de google que lo diseñó venga, lo que sería bastante improbable. –
Son más de lo que crees –
¿Qué hay de malo con el uso de un FocusHandler? – helpermethod