Los oyentes de eventos window.open que no funcionan en Android 4.4.2
Tengo una aplicación PhoneGap que utiliza InAppBrowser para cargar la experiencia de inicio de sesión de Google. Como tal, necesito un detector de eventos que detecte cuando el navegador cambia de ubicación. La configuración de abajo funciona perfectamente bien en todas las versiones de Android excepto para 4.4.2, lo mejor que puedo decir; El oyente del evento dispara y todo es bueno.
Sin embargo, en Android 4.4.2 no puedo conseguir que ningún oyente de eventos dispare por la ventana; Loadstart, onload, onscroll, etc. Nada parece disparar. No parece encontrar soluciones en Google o StackOverflow, por desgracia.
- Phonegap no muestra la alerta
- Vista web de Android, cargando archivo javascript en la carpeta de activos
- JQuery indicador de actividad móvil no se muestra en android
- Cómo ignorar la anotación @JavascriptInterface con compilaciones bajo API 17 -Android
- El emulador de Android cierra usando telnet vía script de appium
No estoy seguro de qué información adicional es necesaria / útil, pero feliz de proporcionar nada.
var auth_window = window.open(auth_url, '_blank', 'location=no,toolbar=no'); auth_window.addEventListener('loadstart', function(event) { alert("blah") })
–
***Actualizar***
He podido conseguir que el oyente dispare retrocediendo de InAppBrowser y abriéndolo otra vez. No tengo ni idea de por qué funcionaría en este caso, pero no de otra manera, sin embargo. Cualquier ayuda aquí sería muy apreciada.
- Llamar a métodos Android desde JavaScript
- Android WebView con incrustaciones iframe no se muestra en 4.2.2 ni en la parte inferior
- Extracto de Android WebView HTML
- Android EPSON thermal Imprimir los datos desde la vista web al hacer clic? Si la impresora no se encuentra?
- Cómo poblar webview en android con texto sin formato de base de datos y ser capaz de manejar caracteres de nueva línea
- Android WebView personalizado no logra encontrar funciones de javascript definidas en HTML cargado
- ¿Cómo puedo detectar qué motor javascript (v8 o JSC) se utiliza en tiempo de ejecución en Android?
- ¿Cómo cambiar el contenido de EditText con Javascript?
Constantemente llamar a exec obligará a procesar los mensajes.
setInterval(function () { cordova.exec(null, null, '', '', []) }, 200);
Estoy utilizando este hack en meteor-phonegap-oauth, https://github.com/jperl/meteor-phonegap-oauth/blob/badfb932bb0b525a32c35115eb75edb8d21bbf57/patch_window.js#L20-L29
Esto también solucionará el problema de que los complementos no invocan su devolución de llamada hasta la siguiente acción del complemento, por ejemplo: No se pueden usar métodos asíncronos en Cordova 3.4. Onsuccess no se llama después de la primera llamada del método de complemento
Es posible que tenga una versión antigua de PhoneGap / Cordova que no es compatible con Android 4.4.x muy bien. En ese caso debe actualizar PhoneGap / Cordova.
Prueba esto :
window.open("http://google.com", '__blank');
var auth_window = window.open(auth_url, '_blank', 'location=no,toolbar=no');
Creo que el tercer parámetro del método anterior es Opciones, y sólo hay una opción que es "ubicación" sí o no, no hay ninguna opción como "barra de herramientas" para este método.
Así que quita la opción adicional después de la coma, y pienso que tú estarías bien.
Aquí está la explicación de la documentación de la brecha del teléfono
Opciones: opciones para InAppBrowser (String) (Opcional, Predeterminado: "location = yes")
La cadena de opciones no debe contener ningún espacio en blanco, cada nombre de función y valor deben estar separados por una coma. Sólo se admite el valor siguiente:
> Location – establecida en 'yes' o 'no' para activar o desactivar la barra de ubicaciones para el InAppBrowser
- En Android cada pantalla debe ser su propia actividad o diseño?
- Las pruebas existentes de la interfaz de usuario de Android dejaron de funcionar después de cambiar a AndroidJUnitRunner