我想在GWT中找出目前关注的元素。基本上我在我们的应用程序中使用虚拟键盘。除tab键外,所有键都正常工作。如果我得到聚焦元素,那么我可以计算出tab键代码。
在javascript和jquery中,我们可以使用document.activeElement
来获取此信息。希望有些机构会让我以正确的方式实现这一目标。
帮助将不胜感激。
答案 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)