我想在GWT中找出当前具有焦点的元素。我们的应用程序中正在开发虚拟键盘,除了Tab键外,所有按键都可以正常工作。如果我获取了有焦点的元素,那么我就可以解决Tab键代码的问题。
在javascript和jquery中,我们可以使用document.activeElement
来实现这一点。希望有人能帮助我找到正确的方法来实现。
将不胜感激。
我想在GWT中找出当前具有焦点的元素。我们的应用程序中正在开发虚拟键盘,除了Tab键外,所有按键都可以正常工作。如果我获取了有焦点的元素,那么我就可以解决Tab键代码的问题。
在javascript和jquery中,我们可以使用document.activeElement
来实现这一点。希望有人能帮助我找到正确的方法来实现。
将不胜感激。
如果您的应用程序面向所有浏览器,则“不支持所有浏览器”这一事实非常重要。activeElement目前被许多浏览器支持。为什么GWT没有isFocused()函数?
我需要类似的功能,即在小部件内部知道它是否具有焦点。我做了以下操作:
protected native boolean hasFocus(Element element) /*-{
return element.ownerDocument.activeElement == element;
}-*/;
我需要传递当前元素以获取正确的文档,只需调用
document.activeElement;
他没有给我需要的文件。你可能可以做同样的事情,但传入不同的元素(比如RootPanel元素?),并返回处于焦点状态的元素而不是布尔值。
protected native Element elementInFocus(Element element) /*-{
return element.ownerDocument.activeElement;
}-*/;
document.activeElement
在某些浏览器中无法正常工作,因此 GWT 不支持该功能。您可以使用焦点和失焦处理程序来跟踪哪个元素具有焦点。
短模板:
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;
}
}
http://www.gwtproject.org/articles/elemental.html
确切的函数将是
elemental.client.Browser.getDocument().getActiveElement()