2012-04-16 91 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