2011-10-12 14 views
5

Ho problemi con PhoneGap in iPhone con gli eventi. L'app sta funzionando abbastanza bene nel mio dispositivo Android, ma sul mio iPhone non fa nulla. Ad esempio, un semplice codice come questo:Gli eventi di PhoneGap non funzionano in 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()"> 

(questo è un esempio di codice che non funziona con iPhone e funziona con Android).

Penso che sia un problema con gli eventi, ma non ne sono sicuro. Anche gli esempi di codice nei documenti PhoneGap non funzionano. Il mio ambiente è:

  1. Mac OSX 10.7.1
  2. Xcode 4.1
  3. PhoneGap 1.1
  4. jQuery Mobile 1.0RC L'unica cosa che mi mostra è questa: http://cl.ly/0h462Y2D2F0J0B1B0q1M

Grazie in anticipo.
Saluti,
Elkas


A proposito, ho installato OSX Lion 10.7.2 e Xcode 4.2 ora. Anche in IOS5 non funziona. Questo mi sta facendo impazzire !!! Anche con questo semplice codice non funziona.

<!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

Tutto sembra a posto, provare a registrare le cose usando alert() per scoprire dove non funziona. – sciritai

+0

Prova anche quello. se metto onload = "onDeviceReady()" nel tag body o in un'altra funzione, viene visualizzato l'avviso ma gli "eventi" di tipo "PhoneGap" continuano a non funzionare. = ( – Elkas

+0

jQuery mobile deve essere aggiunto * dopo * script personalizzati. – Walf

risposta

1

Problema risolto !!

Eseguo l'applicazione senza phonegap.js e me ne ha creato uno nuovo. Ho appena cambiato il suo nome in quello che stavo caricando e l'applicazione alla fine funziona.

+0

Questo è un ottimo spot, ha avuto lo stesso problema e non è stato possibile capire cosa stava succedendo. non è ovvio che phonegap.js venga generato per piattaforma, è necessario pulire la domanda per rendere più semplice il problema. – zode64

+0

È ovvio se si guarda effettivamente nelle directory della piattaforma di destinazione del download di PhoneGap. Dovresti inserire il 'phonegap.js' specifico della piattaforma (o più recentemente' cordova.js') nella tua cartella 'assets/www /', e meglio includerlo prima. – Walf

0

Sort di un ipotesi qui, non so come si compila questa cosa in un app, ma si elencano XCode così .... I punti di markup per i file di script nella cartella jquery/e JavaScript /. Quando si compila un'app con i file XCode non vengono inseriti nelle cartelle effettive che rappresentano le cartelle di gruppo che si utilizzano normalmente. Per fare in modo che i file finiscano in una directory all'interno dell'app, è necessario aggiungere la cartella sul disco rigido come riferimento di cartella (vengono visualizzati come cartelle blu, non in giallo).

Il modo più semplice per verificare se questo è il problema è quello di rimuovere solo il percorso della cartella dello script include solo il nome del file.

+0

Conosco l'amico =) L'ho fatto. Copia e riferimento cartella. Ecco uno schermo http://cl.ly/2C243v0U2a0V062f2B0y – Elkas

1

provare a mettere il listener addevent sotto document.ready come questo .. ha funzionato per me per lo stesso problema.

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

},false); 
}); 
+0

ok. Fammi provare e ti darò una risposta non appena sarò in ufficio. Grazie per la risposta. – Elkas

+0

Ancora non funziona .... Accidenti ... questo mi sta facendo impazzire !!! : P – Elkas

+0

ok, aspetta, vedrai il mio setup e ti dirò non appena entrerò in ufficio. :) – ghostCoder

1

Durante la creazione di un'installazione di PhoneGap per iOS viene utilizzata una versione specifica di (es.) Phonegap.1.4.1.js.

Sostituendo solo questo file con una versione più recente (come cordova.1.8.0.js) ha provocato avvisi non funzionanti.

Se si desidera eseguire l'aggiornamento a una versione più recente di PhoneGap, è necessario "ripetere" il progetto.

Sono tornato a phonegap.1.4.1.js e gli eventi hanno iniziato magicamente a funzionare di nuovo.

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

Anche se questo snippet di codice può risolvere la domanda, [compresa una spiegazione] (http://meta.stackexchange.com/questions/114762/explaining-entally-code-based-answers) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. –

Problemi correlati