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

GWT:后退按钮工作两次,通过浏览器和我的GWT代码,gwt,keyboard-events,backspace,Gwt,Keyboard Events,Backspace,情景: 在我的GWT webapp中,我使用KeyDownHandler捕获用户点击退格的事件。 比如说,我在小部件“B”上使用它,当小部件“B”聚焦时点击backpsace应该会将我带到小部件“A” 问题是: 点击backspace,我被带到小部件“A”,但只是在浏览器将我带回到上一页之前的一瞬间!我希望我的退格事件仅由我的(GWT)代码使用,而不是由浏览器使用 final TextBox txtA = new TextBox(); TextBox txtB = new TextBox

情景:

在我的GWT webapp中,我使用
KeyDownHandler
捕获用户点击退格的事件。 比如说,我在小部件“B”上使用它,当小部件“B”聚焦时点击backpsace应该会将我带到小部件“A”

问题是:

点击backspace,我被带到小部件“A”,但只是在浏览器将我带回到上一页之前的一瞬间!我希望我的退格事件仅由我的(GWT)代码使用,而不是由浏览器使用

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);
这可能对你有用。不过,最好使用shift+tab在基于web的表单IMHO中向后导航。

您可能不得不避免这种情况发生。您可能需要为一些或所有关键事件(在Firefox中为keydown、keypress、keypup)执行此操作;确保测试尽可能多的浏览器

也就是说,劫持全球键盘快捷键被我的许多用户视为过于侵入;这可能会对应用程序的可访问性产生影响