GWT setFocus() – Deferred Command
Freitag, 30. Oktober 2009Ich hatte vor kurzem im heiß geliebten IE6 das Problem, dass das Setzen des Focus auf eine TextBox mittels der Methode “setFocus()” keine Auswirkung hatte. Im Firefox hingegen hat es auf Anhieb geklappt. Nach kurzem rumprobieren hab ich es mit Hilfe eines sogenannten “Deferred Commands” – durch die Klasse DeferredCommand – gelöst. Damit ist es möglich, ein Quellcode-Abschnitt, welcher in einem Command gekapselt wird (siehe Entwurfsmuster Command Pattern), ausserhalb des aktuellen Kontextes NACH allen Handlern auszuführen. Die Umsetzung sieht dann wie folgt aus:
DeferredCommand.add(new Command() { public void execute() { myTextbox.setFocus(true); } });
Und siehe da… wenn der Focus erst ganz zum Schluss des aktuellen Call-Stacks ausgeführt wird, klappts auch mit dem IE6 !