DeviceReady no funciona en la aplicación PhoneGap, ¿cómo?
Tengo una aplicación PhoneGap simple como fallows:
<!DOCTYPE HTML> <html> <head> <title>PhoneGap powered App</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="css/jquery.mobile-1.0.min.css" /> <script type="text/javascript" charset="utf-8" src="phonegap-1.3.0.js"></script> <script src="js/jquery-1.7.1.min.js"></script> <script src="js/jquery.mobile-1.0.min.js"></script> <script type="text/javascript" charset="utf-8"> document.addEventListener("deviceready", onDeviceReady, true); function onDeviceReady() { alert ('123'); } </script> </head> <body onload="onDeviceReady()"> <div data-role="page"> <div data-role="header"> <h1>title</h1> </div><!-- /header --> <div data-role="content"> <h2>Begin by inserting your credentials.</h2> ... </div><!-- /content --> </div><!-- /page --> <script type="text/javascript" charset="utf-8"> $(document).ready(function () { }); </script> </body> </html>
Lo que sucede aquí es que la alerta de alert ('123');
Nunca se despide. Pero si retiro el otro código JavaScript y dejo solo la alerta se dispara.
- El complemento elegido no parece funcionar en navegadores móviles
- Capturar evento clave para retroceso
- La aplicación Build con Herramientas para Apache Cordova falla
- Agregar lugar definido por el usuario en el campo de entrada haciendo clic en un botón para detener el geocompleto
- ¿Cómo soluciono las esquinas de `ui-corner-all` de JQuery Mobile?
También si uso $(document).ready(function () { alert ('123'); }
Recibo la alerta.
¿Qué está sucediendo aquí, por qué el deviceready
no está siendo despedido?
¿Algunas ideas?
- Método multiplataforma para eliminar la barra de direcciones de una aplicación web para móviles
- Cómo deshabilitar el botón de retroceso del teléfono en Android con Jquerymobile, PhoneGap
- No se puede acceder al archivo php desde otro dominio
- Cómo comprobar mediante programación la disponibilidad de conexión a Internet usando jquery
- Evento de clic de JQuery de un elemento div en li no disparado en Safari móvil
- Touchmove y vmousover no funcionan en una aplicación Android de Cordova / PhoneGap
- JQuery y la compatibilidad del navegador móvil?
- Mostrar una imagen desde url externa usando phonegap / jquery para android
Pruébelo de esta manera:
document.addEventListener("deviceready", function(){ alert("123"); },true);
Lo que @GPRathour proporciona funciona porque document.addEventListener()
está escuchando deviceready
, entonces si es cierto, ejecuta su función de alerta. No funcioné cómo lo tuviste por dos razones:
1) cuando el DOM cargado y bajó a su etiqueta de cuerpo estaba llamando a OnDeviceReady () y el oyente nunca recibió la llamada, por lo que phonegap no sabe que está listo para ejecutarse.
2) tendrías que llamar a tu oyente desde dentro de una función y usar 'false':
function init(){ document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady(){ alert('123'); } <body onload="onDeviceReady()"></body>
Echa un vistazo a la API de phonegap en cuanto a por qué utilizar false en lugar de true en tu oyente, tiene que ver con la configuración predeterminada, pero vale la pena leer para entender cómo funcionan los oyentes phonegap.
Sólo en caso de que tenga el mismo problema que yo, no sabía que es necesario incluir el script cordova.js en su index.html, no tiene que proporcionar el archivo o la referencia, sólo tiene que incluir esta línea:
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
Y luego Cordova usará la biblioteca al compilar, después de que el evento sea despachado.
Cuando se utiliza PhoneGap 3.0 con WP8 Device Ready no funcionará porque Phonegap.js no está incluido en la solución de Visual Studio.
La solución es incluirlo manualmente por ahora.
Este código funciona para mí
<body onload="init()"></body> function init() { document.addEventListener("deviceready", onDeviceReady, false); } function onDeviceReady() { // Now safe to use the Cordova API }
Feliz codificación
La razón principal para un evento de ondeviceready no quemado en una o más plataformas, es cuando se intenta usar cordova / phonegap js de la plataforma equivocada.
Añádase a su oyente de eventos para deviceready dentro de su doc …
<script type="text/javascript" charset="utf-8"> $(document).ready(function () { document.addEventListener("deviceready", onDeviceReady, true); }); function onDeviceReady() { alert ('123'); } </script>
Usted no quiere llamar a onDeviceReady () ya que esto ejecutará la función cuando se agrega el listener …
Compruebe las versiones de los archivos de biblioteca / jar de Cordova / phonegap que ha agregado con el proyecto (bajo libs) y el script <script src = "~ / Scripts / cordova-3.0.0.js" /> que se está refiriendo en Los archivos HTML. Si hay un desajuste, el <script /> puede no ser capaz de referirlo en el proyecto. Así que Córdoba no ejecuta su funcionalidad.
En mi caso, necesitaba eliminar meta http-equiv = "Content-Security-Policy" content = "…
Asegúrese de que la ruta debajo es correcta y ambas son necesarias para ser incluidas en html:
<script type="text/javascript" src="cordova.js"></script> <script src="js/jquery-1.11.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ document.addEventListener("deviceready", onDeviceReady, false); }); function onDeviceReady() { alert("inside onDeviceReady"); } </script>
Estás obligando a un manejador a deviceready antes de haber definido el manejador.
Correcto sería:
function onDeviceReady(){ alert('123') } document.addEventListener("deviceready", onDeviceReady, false);
Y, obviamente, su archivo phonegap-2.0.0.js (u otra versión) debe ser incluido en el archivo antes de este punto.
El mayor problema con los ejemplos de PhoneGap son sintaxis javascript incorrecta. Tenga cuidado con esto .. para esta pregunta, onDeviceReady debe tener llaves …
document.addEventListener("deviceready", onDeviceReady(), true); function onDeviceReady() { alert ('123'); }
- Error al inflar la clase CollapsingToolbarLayout
- Se hace clic en un diseño invisible detrás del fragmento: