GWT:后退按钮工作两次,包括浏览器和我的GWT代码

时间:2013-04-26 16:21:34

标签: gwt keyboard-events backspace

情景:

在我的GWT webapp中,我使用KeyDownHandler来捕获用户命中退格的事件。 比如,我在小部件'B'上使用它,当小部件'B'聚焦时触及后退应该将我带到小部件'A'。

问题:

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

2 个答案:

答案 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)执行此操作;一定要测试尽可能多的浏览器!

话虽这么说,劫持全球键盘快捷键被我的许多用户视为过于干扰;它可能会对您应用的可访问性产生影响。