在帮助加快用户工作流程的过程中,我想将焦点设置为TextBox。我开始只是将行queryBox.setFocus(true);
添加到视图方法。然而,这不起作用。有用的是推迟电话会议:
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
queryBox.setFocus(true);
}
});
为什么它会起作用,而不是我的第一次尝试?
根据下面Baadshah提供的参考资料,似乎这是一个existing GWT issue,据此,“基本上,setFocus()只是不起作用,除非它被包裹 DeferredCommand大部分时间。“
答案 0 :(得分:2)
YES,queryBox.setFocus(true);如果queryBox
尚未附加到DOM.
,则无法使用
TextBox
需要先附加到document
才能focus
。
您是对的,browser
确实需要时间才能加载DOM
,但我们无法看到此delay
。
我们完全不知道load
的{{1}}(我的意思是附在文件中)何时完成。
因此,使用textbox
我们让自己等待schedular
直到渲染完成,才能在呈现的some time
上应用focus
。
这是一个感兴趣的discussion。