为什么GWT中没有isFocused()?

时间:2011-09-12 21:30:19

标签: gwt

在编程方案中,我需要检查我的GWT文本框是否有重点。我最后添加了一个布尔值和一对Focus& BlurHandler手动保持焦点状态,这让我想知道为什么没有这样的方法在焦点组件聚焦于gwt时返回?

2 个答案:

答案 0 :(得分:11)

因为几年前没有任何跨浏览器的方式(Firefox 3,Safari 4,指向游戏中的最后一个玩家增加了支持document.activeElement)。

GWT仍然正式支持[1] Safari 3(我相信Safari 2支持已被弃用)甚至可能是Firefox 2(没有DevMode插件,但这并不意味着浏览器不受支持:Opera支持但是已经支持也没有DevMode,所以不可能提供适用于所有支持的浏览器的功能。

最后,但并非最不重要的是,我认为没有人提出问题跟踪器的增强请求(至少我找不到);正如你所说,你今天已经可以使用FocusHandler / BlurHandler(它可以跨浏览器工作)来实现。

[1] http://code.google.com/webtoolkit/doc/latest/FAQ_GettingStarted.html#What_browsers_does_GWT_support?我相信该页面有点过时,因为它仍然列出了Firefox 1.0,其支持(user.agent = gecko,与gecko1_8)已在GWT 2.1.0中删除,并且未列出IE9,其支持包含已添加到GWT 2.3.0中,最后但并非最不重要的是,我相信只支持最新版本的Opera,而列表则谈到Opera 9。

答案 1 :(得分:1)

要查找哪个小部件具有焦点,我不知道您是否已经有解决方案。作为GWT的新手,我提出了我的解决方案:

  1. 在对象中声明私有字段,例如'focusedWidget'step 1

  2. 为窗口小部件创建焦点处理程序,这里是类TextBox。在OnFocus块中,只需将窗口小部件分配给'focusedWidget'。您可以将此类事件添加到可以聚焦的每个窗口小部件中。 ![步骤2] [2]

  3. 就是这样。每个关注焦点事件的小部件都会在每次聚焦时将自己设置为“focusedWidget”。然后我们可以使用'focusedWidget'来确定哪个当前小部件是关注的。 ![步骤3] [3]
  4. 我在JUnit测试它,它有效! see image of snippet here 希望有所帮助。