In uno scenario di programmazione, avevo bisogno di controllare se la mia casella di testo GWT era focalizzata o meno. Ho finito per aggiungere un booleano e un paio di Focus & BlurHandler per mantenere manualmente lo stato di messa a fuoco che mi fa chiedere perché non esiste un metodo che ritorna se un componente focalizzabile è focalizzato in gwt?Perché non c'è isFocused() in GWT?
risposta
Perché non c'era alcun modo di utilizzare il browser fino a qualche anno fa (Firefox 3, Safari 4, per puntare gli ultimi giocatori nel gioco con il supporto aggiunto document.activeElement
).
GWT supporta ancora ufficialmente [1] Safari 3 (credo che il supporto per Safari 2 sia stato deprecato) e forse anche Firefox 2 (nessun plug-in DevMode, ma ciò non significa che il browser non sia supportato: Opera è supportato ma neanche DevMode), quindi non è possibile fornire una funzione simile che possa funzionare in tutti i browser supportati.
Ultimo, ma non meno importante, penso che nessuno abbia mai presentato una richiesta di miglioramento nel tracker dei problemi (non ne ho trovato almeno uno); e come hai detto, puoi farlo già oggi usando FocusHandler/BlurHandler (che funziona con il cross-browser).
[1] http://code.google.com/webtoolkit/doc/latest/FAQ_GettingStarted.html#What_browsers_does_GWT_support? Credo che la pagina sia un po 'obsoleta, in quanto elenca Firefox 1.0, il cui supporto (user.agent = gecko, vs gecko1_8) è stato rimosso in GWT 2.1.0, e non elenca IE9, il cui supporto ha stato aggiunto in GWT 2.3.0, e, ultimo ma non meno importante, credo che solo l'ultima versione di Opera è supportato, considerando che l'elenco parla di Opera 9.
Per una visione più ampia di quali browser lo supportano, vedere ad esempio MDN: https://developer.mozilla.org/en-US/docs/Web/API/document.activeElement Oggi, sembra che tutti i principali browser lo supportino (IE 4+, Chrome 2+, ecc.), Quindi è abbastanza sicuro utilizzarlo. – PhiLho
Per trovare quale widget ha messa a fuoco, io non so se hai già una soluzione. Come un novizio di GWT, propongo la mia soluzione per condividere:
Dichiarare campo privato in oggetto, come gestore focus 'focusedWidget'
Creare per il widget, ecco classe TextBox. Nel blocco OnFocus, assegna il widget a 'focusedWidget'. È possibile aggiungere questo tipo di evento a ogni widget che può essere focalizzato. ! [passaggio 2] [2]
- Questo è tutto. Ogni widget che hai associato all'evento focus si imposterà su 'focusedWidget' ogni volta che è focalizzato. Possiamo quindi utilizzare 'focusedWidget' per determinare quale widget corrente è focalizzato. ! [passaggio 3] [3]
Lo collaudo in JUnit
, funziona! see image of snippet here Spero che aiuto.
questo è utile, ma sarà necessario aggiungere il gestore di sfocatura anche a ciascun elemento, in modo che la situazione di nessun elemento attualmente focalizzato possa essere rilevata e il valore focusedWidget può essere impostato su null. – Joel
- 1. WPF Combobox modificabile IsFocused problem
- 2. Perché è necessario gwt-bootstrap?
- 3. Qual è la differenza tra hasFocus() e isFocused() in Android?
- 4. Perché GWT non funziona senza? Gwt.codesvr = 127.0.0.1: 9997
- 5. Ext GWT vs GWT-EXT
- 6. Differenza tra gwt, gwt-rpc, ext-gwt, smart gwt
- 7. GWT SuperDev - Non riesci a trovare i moduli GWT
- 8. Come sapere se l'UserControl è attivo diverso dall'uso di IsFocused
- 9. presentatori non impegnativa necessarie GWT
- 10. GWT allineamento orizzontale non funziona
- 11. GWT: UiBinder o GWT Designer?
- 12. Codice GWT O GWT Designer?
- 13. Ridimensionamento di un'immagine in GWT
- 14. Serialize Object in GWT
- 15. Serializzazione BigDecimal in GWT
- 16. aggiornamento forzato in GWT
- 17. WebWorkers in GWT Elemental
- 18. RIght-Click in GWT?
- 19. Ruolo EventBus in GWT
- 20. Promemoria in GWT
- 21. GWT Animazione Valore finale non è rispettato
- 22. Maiusc in GWT?
- 23. La modalità host GWT non funziona con Spring + Eclipse + GWT Plug-in Eclipse
- 24. GWT bookmarket o GWT come libreria esterna
- 25. GWT: come cambiare colore di riga in GWT Celltable
- 26. GWT IllegalArgumentException: encodedRequest non può essere vuoto
- 27. GWT ListBox non selezionata di default
- 28. GWT DataGrid setLoadingIndicator non ha effetto
- 29. GWT TypeOracle.getTypes non restituisce tutti i tipi
- 30. Come espandere l'albero in gwt?
Nessuno qui può rispondere a questo. A meno che uno dei ragazzi di Google che lo ha progettato sia venuto fuori, il che sarebbe abbastanza improbabile. –
Sono circa più di quanto pensi –
Cosa c'è di sbagliato nell'usare un FocusHandler? – helpermethod