情景:
在我的GWT webapp中,我使用KeyDownHandler
来捕获用户命中退格的事件。
比如,我在小部件'B'上使用它,当小部件'B'聚焦时触及后退应该将我带到小部件'A'。
问题:
在点击退格键时,我被带到小部件'A',但只是片刻之前浏览器将我带回上一页!我希望我的退格事件只能由我的(GWT)代码使用,而不是浏览器。
答案 0 :(得分:0)
final TextBox txtA = new TextBox();
TextBox txtB = new TextBox();
VerticalPanel testPanel = new VerticalPanel();
testPanel.add(txtA);
testPanel.add(txtB);
txtB.addKeyDownHandler(new KeyDownHandler() {
public void onKeyDown(KeyDownEvent event) {
if(event.getNativeKeyCode() == KeyCodes.KEY_BACKSPACE){
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
public void execute() {
txtA.setFocus(true);
}
});
}
}
});
RootPanel.get().add(testPanel);
此SO post可能对您有用。然而,使用shift + tab在基于Web的表单IMHO中向后导航仍然更好。
答案 1 :(得分:0)
您可能不得不prevent the default action发生。您可能必须为部分或全部关键事件(keydown,keypress -in Firefox-,keyup)执行此操作;一定要测试尽可能多的浏览器!
话虽这么说,劫持全球键盘快捷键被我的许多用户视为过于干扰;它可能会对您应用的可访问性产生影响。