update javascript cordova cordova-cli

javascript - update - Cordova DeviceReady no dispara



uninstall cordova (4)

Me he estado golpeando la cabeza por unos días. Después de obtener una serie de errores de "objeto no definido" al intentar crear un nuevo objeto FileTransfer (), parece que el problema es más básico: de alguna manera, el evento DeviceReady no se dispara.

Stack Overflow tiene muchos éxitos en este problema, pero la mayoría de ellos tiene que ver con construcciones de cordova anteriores a la 3.x que tenían una arquitectura diferente (estoy en 4.1.2). He intentado las sugerencias en los temas más nuevos que pude encontrar: eliminar y agregar complementos, actualizar Córdoba, etc., sin éxito. Para tratar de aislar el problema, he comentado el código de inicio con solo unas pocas líneas:

Index.html:

<!DOCTYPE html> <html> <head> <title>Blah</title> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1, user-scalable=no, minimum-scale=1, maximum-scale=1"> <link href="res/topcoat/css/topcoat-mobile-light.min.css" rel="stylesheet"> <link href="res/css/styles.css" rel="stylesheet"> <link href="res/css/pageslider.css" rel="stylesheet"> <script data-main="js/main" src="lib/require.js"></script> </head>

Main.js:

require(["app/Application"], function (Application) { "use strict"; document.addEventListener("deviceready", function(){ $(''body'').html("<p>device is ready</p>"); },true); $(''body'').html("<p>waiting...</p>"); });

En lugar de mostrar "el dispositivo está listo" en el cuerpo después de un rato, la pantalla simplemente muestra "esperando ...". Esto sucede tanto en el emulador de iOS como en el navegador (cordova emulate browser).

Información de Córdoba:

$ cordova -v 4.1.2

Información del plugin:

$ cordova plugins org.apache.cordova.globalization 0.3.3 "Globalization"

(Obtengo los mismos resultados si la globalización no está ahí).

¿Hay algún otro lugar que debería estar buscando? Estoy corriendo desde la línea de comandos, si eso hace una diferencia.


Creo que en este caso necesita incluir cordova.js en su aplicación, porque no veo cordova.js en su ejemplo

<script src="cordova.js"></script>

Nota: la ruta a cordova.js depende de dónde se encuentre en su aplicación


Eso no me lo arregló inicialmente hasta que lo quité.

< meta http-equiv="Content-Security-Policy" content=".." / >


He estado tratando de solucionar este problema para los DÍAS y finalmente conseguí que el deviceready dispare. El problema era que había extendido el Object js para insertar mis propios comandos hide y show. Eliminar esas líneas permitió que deviceready :

Object.prototype.hide = function(){ this.style.display = ''none''; } Object.prototype.show = function(){ this.style.display = ''initial''; }

nota: También tuve que tener la línea <script src="cordova.js"></script> como lo menciona Alexander T


Recientemente tuve este mismo problema, pero en mi caso, cordova.js ya estaba correctamente incluido.

Finalmente, lo que funcionó para mí fue una simple remove y add de la plataforma ios :

cordova platform remove ios cordova platform add ios

Había pasado bastante tiempo desde que había reconstruido completamente la plataforma ios y otros cambios importantes habían tenido lugar durante ese tiempo (actualización de Cordova, actualización de XCode, etc.). Es posible que mi config.xml o la compilación de ios existente fuera de alguna manera incompleta con los últimos requisitos de Cordova.