2012-04-16 82 views
4

我有一个简单的WebView应用程序,我想用键盘控制。 是否有可能在javascript中捕获箭头键?android WebView:处理JavaScript中的箭头键

我曾尝试下面的代码没有任何的运气:

function handleArrowKeys(evt) { 
    console.info('key');                       
} 

document.onkeyup = handleArrowKeys; 
document.onkedown = handleArrowKeys; 
document.onkepress = handleArrowKeys; 

JavaScript在web视图

WebSettings webSettings = webview.getSettings(); 
webSettings.setJavaScriptEnabled(true); 
webSettings.setDomStorageEnabled(true); 
+0

您是否尝试过'document.body.onkeydown'等? – 2012-04-16 12:08:41

+0

是的,我确实从正常的键获取了关键事件,但没有从箭头键获取事件。 WebView不会触发这些。 – bara 2012-04-17 10:16:38

+0

我发现'shouldOverrideKeyEvent'是'WebViewClient'。我认为这是朝着正确的方向 – bara 2012-04-17 10:58:14

回答

4

您应该覆盖的WebView的onKeyDown方法启用。 见:http://blog.csdn.net/focusxi/article/details/6780965

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event){ 
    int valKey = 0; 
    System.out.println("Web KEY:"); 
    System.out.println(keyCode);  

    switch(keyCode){ 
     //UP 
     case 50: 
     case 19: 
      valKey = 19; 
      break; 
     //DOWN 
     case 83: 
     case 20: 
      valKey = 20;   
      break; 
     //LEFT 
     case 81: 
     case 21: 
      valKey = 21; 
      break; 
     //RIGHT 
     case 69: 
     case 22: 
      valKey = 22;  
      break; 
    } 

    if (valKey!=0) 
    { 
     //new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT); 
     KeyEvent event1 = new KeyEvent(KeyEvent.ACTION_DOWN, valKey); 

     System.out.println(event1.getKeyCode());  

     return super.onKeyDown(38, event1); 
    } 
    else 
    { 
     return super.onKeyDown(keyCode, event); 
    } 

} 
} 
+1

你必须写在JavaScript document.onkeydown =功能(事件){/ /做一些事情};对我来说,我不能使用jquery $(document).on(“keydown”)。能够听这在JavaScript上感谢这实际上工作 – ncubica 2014-01-29 04:28:06

+0

领域有焦点时崩溃。 – Alex 2015-07-06 13:04:38