Androide WebView: manejar las teclas de flecha en JavaScript
Tengo una simple aplicación WebView que quiero controlar con el teclado. ¿Es posible capturar las teclas de flecha en javascript?
He intentado el código siguiente sin ninguna suerte:
- Detectar si actualmente se desplaza una página web en Android
- JavaScript: Seguimiento de la selección de cambios en Firefox para Android
- Cómo recuperar el valor de la función de script java en el componente de vista web
- Touchend no disparar después de touchmove en android 4.x?
- Pinch zoom in, zoom out - javascript / jquery / jquery eventos móviles para la web en la plataforma android?
function handleArrowKeys(evt) { console.info('key'); } document.onkeyup = handleArrowKeys; document.onkedown = handleArrowKeys; document.onkepress = handleArrowKeys;
Javascript está habilitado en la webview
WebSettings webSettings = webview.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true);
- ¿Qué es una solución alternativa para Chrome para el comportamiento incorrecto de clientX y clientY de Android?
- Ejecución de javascript en segundo plano mediante el teléfono
- El enfoque de la ventana y los eventos de desenfoque no funcionan correctamente en el navegador de Android
- Swipeleft / swiperight activado durante el desplazamiento vertical en jQuery móvil
- JQuery - Android - El evento 'Keyup' no funciona en retroceso en Chrome
Debe sobrescribir el método onKeyDown
de WebView. Ver: 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); } } }