我如何找出哪个GWT元素有焦点?

时间:2012-01-20 09:58:36

标签: javascript jquery gwt

我想在GWT中找出目前关注的元素。基本上我在我们的应用程序中使用虚拟键盘。除tab键外,所有键都正常工作。如果我得到聚焦元素,那么我可以计算出tab键代码。

在javascript和jquery中,我们可以使用document.activeElement来获取此信息。希望有些机构会让我以正确的方式实现这一目标。

帮助将不胜感激。

4 个答案:

答案 0 :(得分:7)

只有当您的应用定位到所有浏览器时,“所有浏览器”都不支持这一事实。很多浏览器Why is there no isFocused() in GWT?目前支持activeElement。

我需要类似的东西,我需要从小部件内部了解它是否有焦点。我做了以下

protected native boolean hasFocus(Element element) /*-{
   return element.ownerDocument.activeElement == element;
}-*/; 

我需要传入当前元素才能获得正确的文档,只需调用

即可
document.activeElement;

没有给我我需要的文件。你可能会做同样的事情,但传入一个不同的元素(RootPanel元素可能?)并返回焦点元素而不是bool。

protected native Element elementInFocus(Element element) /*-{
   return element.ownerDocument.activeElement;
}-*/; 

答案 1 :(得分:1)

document.activeElement在所有浏览器中都不起作用,因此在GWT中不支持。您可以使用焦点和模糊处理程序来跟踪哪个元素具有它。

答案 2 :(得分:0)

简短模板:

public class IntBox extends com.google.gwt.user.client.ui.IntegerBox {

private boolean focused=false;

public IntBox(){

        addFocusHandler(new FocusHandler() {

            @Override
            public void onFocus(FocusEvent event) {
                focused=true;
            }
        });

        addBlurHandler(new BlurHandler() {

            @Override
            public void onBlur(BlurEvent event) {
                focused=false;
            }
        });

    }

    public boolean isFocused() {
        return focused;
    }

}

答案 3 :(得分:0)

我们现在可以使用元素库来实现这一目标。

http://www.gwtproject.org/articles/elemental.html

确切的功能是

object