场景:
在我的 GWT webapp 中,我KeyDownHandler
用来捕获用户按下退格键的事件。说,我在小部件'B'上使用它,当小部件'B'聚焦时点击后退应该带我到小部件'A'。
问题:
在点击退格键时,我被带到小部件'A',但只是在浏览器将我带回上一页之前的片刻!我希望我的退格事件只能由我的(GWT)代码使用,而不是浏览器。
场景:
在我的 GWT webapp 中,我KeyDownHandler
用来捕获用户按下退格键的事件。说,我在小部件'B'上使用它,当小部件'B'聚焦时点击后退应该带我到小部件'A'。
问题:
在点击退格键时,我被带到小部件'A',但只是在浏览器将我带回上一页之前的片刻!我希望我的退格事件只能由我的(GWT)代码使用,而不是浏览器。
您可能必须阻止默认操作发生。您可能必须为部分或全部关键事件(keydown、keypress –in Firefox–、keyup)执行此操作;一定要测试尽可能多的浏览器!
话虽如此,我的许多用户都认为劫持全局键盘快捷键过于侵扰。它可能会对您的应用程序的可访问性产生影响。
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 帖子可能对您有用。但是,恕我直言,使用 shift+tab 在基于 Web 的表单中向后导航仍然更好。