2013-04-26 53 views
0

情景工作两次:GWT:后退按钮,都是由浏览器和我的GWT代码

在我的GWT的webapp,我使用KeyDownHandler捕获用户点击Backspace的事件。 说,我正在使用它的小部件“B”,并击中小部件'B'的重点应该把我带到小部件'A'。

问题:

在击中退格,我转到了小部件“A”,但只一会儿浏览器把我带回到以前的页面之前!我希望我的退格事件仅用于我的(GWT)代码,而不是浏览器。

回答

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 +标签向后导航到一个基于Web的形式恕我直言。

0

您可能需要prevent the default action发生。您可能必须为部分或全部关键事件(keydown,keypress -in Firefox-,keyup)执行此操作。一定要测试尽可能多的浏览器!

这就是说,劫持全球键盘快捷键被看到我的许多用户太侵入;它可能会影响您的应用的可访问性。