El enfoque de la ventana y los eventos de desenfoque no funcionan correctamente en el navegador de Android

Descubrí que los eventos de foco y desenfoque de JavaScript no se disparan correctamente en el navegador de Android, cuando se adjunta a ventana, documento o cuerpo.

I worte un script de prueba simple que funciona correctamente en los navegadores de escritorio, pero falla en Android navegador de valores, Dolphin y Opera móvil:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" /> <title>Focus test</title> <script type="text/javascript"> window.onfocus = function() { document.getElementById('console').innerHTML += '<div>Focus event handler fired.</div>'; }; window.onblur = function() { document.getElementById('console').innerHTML += '<div>Blur event handler fired.</div>'; }; </script> </head> <body> <input id="test" name="test" /> <div id="console"></div> </body> </html> 

Intresting es que si la entrada de formulario está recibiendo el foco, el manejador de eventos se dispara y, al desenfocar, el controlador de eventos de desenfoque se dispara dos veces.

¿Alguien tiene una buena solución o una solución para esto?

EDIT: El resultado esperado sería que si cambia una pestaña del navegador o cambia a otra aplicación, el evento de desenfoque se disparará y si vuelvo a la pestaña del navegador, el evento de enfoque debería dispararse (así funciona en el escritorio )

Acabo de probar tu código en un Galaxy Nexus corriendo jellybean (todo lo que tengo) y este código funciona perfecto, y ambos eventos sólo se disparan una vez cada uno.

 document.getElementById('test').onfocus = function() { document.getElementById('console').innerHTML += '<div>Focus event handler fired.</div>'; }; document.getElementById('test').onblur = function() { document.getElementById('console').innerHTML += '<div>Blur event handler fired.</div>'; };​ 

Podría ser que estuviera apuntando a la ventana, que en la mayoría de los dispositivos móviles, normalmente no puede ser "borrosa" per se. Asegúrese de pedir directamente al elemento que informe de su propio desenfoque y los eventos de enfoque.

EDIT: Además, asegúrese de que está esperando que el DOM esté listo antes de aplicar los oyentes de eventos.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.