2011-10-12 12 views
5

Estoy teniendo problemas con PhoneGap en el iPhone con los eventos. La aplicación funciona bastante bien en mi dispositivo Android, pero en mi iPhone no funciona. Por ejemplo, un código simple como esto:Eventos de Phonegap que no funcionan en iphone

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0;" /> 
    <meta charset="utf-8"> 
    <title>WayAcross Mobile Application</title> 
    <link rel="stylesheet" href="css/jquery.css" /> 
    <link rel="stylesheet" href="css/screen.css" /> 
    <link rel="stylesheet" href="css/login.css" />  
    <script type="text/javascript" charset="utf-8" src="jquery/jquery.js"></script> 
    <script type="text/javascript" charset="utf-8" src="jquery/jquery.mobile.js"></script> 
    <script type="text/javascript" charset="UTF-8" src="javascript/mainJavascript.js"></script> 
     <script type="text/javascript" charset="utf-8"> 

      // Call onDeviceReady when PhoneGap is loaded. 
      // 
      // At this point, the document has loaded but phonegap.js has not. 
      // When PhoneGap is loaded and talking with the native device, 
      // it will call the event `deviceready`. 
      // 
      function onLoad(){ 
       document.addEventListener("deviceready", onDeviceReady, false); 
      } 

      // PhoneGap is loaded and it is now safe to make calls PhoneGap methods 
      // 
      function onDeviceReady() { 
       // Now safe to use the PhoneGap API 
       alert('ready'); 
      } 

      </script> 
     <script type="text/javascript" charset="utf-8" src="javascript/phonegap.js"></script> 
</head> 
<body onload="onLoad()"> 

(este es un ejemplo de código que no funciona con el iPhone y funciona con Android).

Creo que es un problema con los eventos, pero no estoy seguro. Incluso los ejemplos de código en documentos de PhoneGap no funcionan. Mi entorno es:

  1. Mac OS X 10.7.1
  2. Xcode 4.1
  3. PhoneGap 1.1
  4. jQuery Mobile 1.0RC La única cosa que me muestra es la siguiente: http://cl.ly/0h462Y2D2F0J0B1B0q1M

Gracias de antemano.
Saludos,
Elkas


Por cierto, he instalado OS X Lion 10.7.2 y Xcode 4.2 ahora. Incluso en el IOS5 no funciona. ¡¡¡Esto me está volviendo loca!!! Incluso con este código simple no está funcionando.

<!DOCTYPE html> 
<html> 
<head> 
    <title>PhoneGap Device Ready Example</title> 

    <script type="text/javascript" charset="utf-8"> 

     // Call onDeviceReady when PhoneGap is loaded. 
     // 
     // At this point, the document has loaded but phonegap.js has not. 
     // When PhoneGap is loaded and talking with the native device, 
     // it will call the event `deviceready`. 
     // 
     document.addEventListener("deviceready", onDeviceReady, false); 

     // PhoneGap is loaded and it is now safe to make calls PhoneGap methods 
     // 
     function onDeviceReady() { 
      alert('Hello World'); 
     } 

     </script> 
    <script type="text/javascript" charset="utf-8" src="javascript/phonegap.js"</script> 
</head> 
    <body> 
    </body> 
</html> 
+0

Todo se ve bien allí, intente registrar cosas usando alert() para averiguar dónde está fallando. – sciritai

+0

También intenta eso. si puse onload = "onDeviceReady()" en la etiqueta del cuerpo u otra función, muestra la alerta, pero los "eventos" phonegap todavía no funcionan. = ( – Elkas

+0

jQuery mobile debe agregarse * después de * scripts personalizados. – Walf

Respuesta

1

Problema solucionado!

Ejecuto la aplicación sin el phonegap.js y me crea una nueva. Acabo de cambiar el nombre por el que estaba cargando y la aplicación finalmente funciona.

+0

Este es un gran lugar, tenía el mismo problema y no podía resolver lo que estaba pasando. en realidad no es obvio que se genera phonegap.js por plataforma, debe limpiar la pregunta para que sea más fácil cuál fue su problema. – zode64

+0

Es obvio si realmente busca en los directorios de su plataforma de destino la descarga de facsímil. Se supone que debes poner el 'phonegap.js' específico de la plataforma (o más recientemente' cordova.js') en tu directorio 'assets/www /', y es mejor incluirlo primero. – Walf

0

Una especie de conjetura salvaje aquí, sin saber cómo se compila esta cosa en una aplicación, pero por lo que la lista XCode .... Los puntos de marcado de archivos de comandos en la carpeta jQuery/y JavaScript /. Al compilar una aplicación con XCode, los archivos no se colocan en las carpetas reales que representan las carpetas de grupo que normalmente usa. Para que los archivos realmente terminen en un directorio dentro de la aplicación, necesita agregar la carpeta en su disco duro como una referencia de carpeta (se muestran como carpetas azules, no amarillas).

La forma más fácil de comprobar si este es el problema es simplemente eliminar la ruta de acceso de la carpeta de la secuencia de comandos para que solo sea el nombre del archivo.

+0

Sé compañero =) Lo he hecho. Copia y carpeta de referencia. Aquí hay una pantalla. http://cl.ly/2C243v0U2a0V062f2B0y – Elkas

1

intente poner el oyente addevent debajo de document.ready como este .. funcionó para mí por el mismo problema.

$(document).ready(function(){ 
document.addEventListener("deviceready",function(){ 

},false); 
}); 
+0

bien. Déjame probarlo y te daré una respuesta tan pronto como esté en la oficina. Gracias por la respuesta. – Elkas

+0

Todavía no funciona ... Maldición ... ¡esto me está volviendo loco! : P – Elkas

+0

ok, espera, veré mi configuración y te avisaré tan pronto como esté en la oficina tomo. :) – ghostCoder

1

Al crear una instalación de Phonegap para iOS se utiliza una versión específica de (ie) phonegap.1.4.1.js.

Al reemplazar este archivo por una versión más reciente (como cordova.1.8.0.js), las alertas no funcionan.

Si desea actualizar a una versión más nueva de Phonegap, deberá "rehacer" su proyecto.

Volví a phonegap.1.4.1.js y los eventos mágicamente comenzaron a funcionar de nuevo.

0
function testDialog() { 
    document.addEventListener("deviceready", onDeviceReady, false); 
    function onDeviceReady() { 
     navigator.notification.alert("This is message", function(){}, "HaHa", "Done"); 
    } 
} 
+3

Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. –

Cuestiones relacionadas