为什么延迟TextBox.setFocus(true)有效?

时间:2013-04-21 14:51:32

标签: gwt

在帮助加快用户工作流程的过程中,我想将焦点设置为TextBox。我开始只是将行queryBox.setFocus(true);添加到视图方法。然而,这不起作用。有用的是推迟电话会议:

  Scheduler.get().scheduleDeferred(new ScheduledCommand() {

     @Override
     public void execute() {
        queryBox.setFocus(true);
     }
  });

为什么它会起作用,而不是我的第一次尝试?

更新

根据下面Baadshah提供的参考资料,似乎这是一个existing GWT issue,据此,“基本上,setFocus()只是不起作用,除非它被包裹 DeferredCommand大部分时间。“

1 个答案:

答案 0 :(得分:2)

YES,queryBox.setFocus(true);如果queryBox尚未附加到DOM.,则无法使用 TextBox需要先附加到document才能focus

您是对的,browser确实需要时间才能加载DOM,但我们无法看到此delay

我们完全不知道load的{​​{1}}(我的意思是附在文件中)何时完成。

因此,使用textbox我们让自己等待schedular直到渲染完成,才能在呈现的some time上应用focus

这是一个感兴趣的discussion