0

场景:

在我的 GWT webapp 中,我KeyDownHandler用来捕获用户按下退格键的事件。说,我在小部件'B'上使用它,当小部件'B'聚焦时点击后退应该带我到小部件'A'。

问题:

在点击退格键时,我被带到小部件'A',但只是在浏览器将我带回上一页之前的片刻!我希望我的退格事件只能由我的(GWT)代码使用,而不是浏览器。

4

2 回答 2

0

您可能必须阻止默认操作发生。您可能必须为部分或全部关键事件(keydown、keypress –in Firefox–、keyup)执行此操作;一定要测试尽可能多的浏览器!

话虽如此,我的许多用户都认为劫持全局键盘快捷键过于侵扰。它可能会对您的应用程序的可访问性产生影响。

于 2013-04-26T18:46:22.043 回答
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 帖子可能对您有用。但是,恕我直言,使用 shift+tab 在基于 Web 的表单中向后导航仍然更好。

于 2013-04-26T16:45:10.230 回答