【问题标题】:Android WebView: Handle arrow keys in JavaScriptAndroid WebView:在 JavaScript 中处理箭头键
【发布时间】:2012-04-16 10:59:43
【问题描述】:

我有一个简单的 WebView 应用程序,我想用键盘控制它。 是否可以在 Javascript 中捕获箭头键?

我尝试了以下代码,但没有任何运气:

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

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

在 webview 中启用了 Javascript

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

【问题讨论】:

  • 你试过document.body.onkeydown等吗?
  • 是的,我确实从普通键获得关键事件,但没有从箭头键获得事件。 WebView 不会触发这些。
  • 我找到了shouldOverrideKeyEvent WebViewClient。我认为这是朝着正确的方向发展
  • 好的,很酷。顺便说一句,onkeypress 永远不会触发箭头键。对于特殊键,您必须使用 down/up。

标签: javascript android android-webview dom-events


【解决方案1】:

您应该覆盖 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);
    }

}
}

【讨论】:

  • 你必须写在 javascript document.onkeydown = function(event){ //do something };对我来说,我不能使用 jquery $(document).on("keydown")。能够在 javascript 上收听这个,谢谢这确实有效
  • 字段获得焦点时崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多