如何在GWT中将tabindex设置为-1?
GWT有一个问题:我需要从焦点循环中跳过一个按钮,因此我使用button.setTabIndex(-1)将选项卡索引设置为-1,但在生成的html中,我得到了tabindex=“0”。。。这是一个bug吗?似乎不可能有一个负的tabindex 首先,如何在GWT中将tabindex设置为-1?,gwt,tabindex,Gwt,Tabindex,GWT有一个问题:我需要从焦点循环中跳过一个按钮,因此我使用button.setTabIndex(-1)将选项卡索引设置为-1,但在生成的html中,我得到了tabindex=“0”。。。这是一个bug吗?似乎不可能有一个负的tabindex 首先,setTabIndex的文档说: 设置小部件在选项卡索引中的位置。如果有多个小部件 具有相同的选项卡索引,每个这样的小部件将在 任意命令。将选项卡索引设置为-1将导致此小部件 将从选项卡顺序中删除 w3c说: 可能接收焦点的元素应由用户代理导航 根据
setTabIndex
的文档说:
设置小部件在选项卡索引中的位置。如果有多个小部件
具有相同的选项卡索引,每个这样的小部件将在
任意命令。将选项卡索引设置为-1将导致此小部件
将从选项卡顺序中删除
w3c说:
可能接收焦点的元素应由用户代理导航
根据以下规则:
Button myButton = new Button("Hello");
myButton.setTabIndex(-2);
// "-1" is convert to 0, and the button is not skipped
我尝试myButton.setTabIndex(-1)
和myButton.getElement.setAttribute(“tabindex”,“-1”)
,在html中总是转换为0
我希望这能对您有所帮助。它看起来像是故意的:
FocusWidget
的onAttach
在onAttach
中将选项卡索引设置为-1:
这种行为可以追溯到3年半以前(在GWT2.1.0中发布):所以我很惊讶你是第一个报告它的人(据我所知),但在我看来它确实像一个bug。与jsni合作。
例如:
public static native void setElementTabIndex(Element b, int ti)/*-{
b.tabIndex = ti;
}-*/;
//and call the native js function
setElementTabIndex(odButton.getElement(), -1);
与setFocus一样,使用延迟:
Scheduler.get().scheduleDeferred(new Command() {
@Override
public void execute() {
cb.setTabIndex(-1);
}
});
在我的例子中,cb=CheckBox()就是这样设置的。那么你能发布一个片段来说明这个问题吗?“似乎不可能有一个负的tabindex”:HTML4不允许它,但浏览器必须处理这个问题,并且;你的其余答案正是问题中最初报告的问题。