2013-05-21 15 views
6

Aktualnie używam PhoneGap 2.7.0 na moim projekcie i kod działa bez błędu na iOS. Gdy próbuję uruchomić ten sam kod na Androidzie (z wyjątkiem pliku javascript Cordova, który ja wiem jest różna dla Androida) dostaję taki błąd:Cordova Android Uncaught Function Error

05-21 22:02:25.630 1663-1663/com.###.### D/Cordova: onPageFinished(file:///android_asset/www/index.html) 
05-21 22:02:25.640 1663-1663/com.###.### D/CordovaLog: Uncaught Function required as first argument! 
05-21 22:02:25.640 1663-1663/com.###.### E/Web Console: Uncaught Function required as first argument! at file:///android_asset/www/cordova-2.7.0.js:627 

Oto JavaScript używam w index.html:

<script type="text/javascript"> 
var app; 
document.addEventListener("deviceready", function() 
{ 
    app = new AppWrapper(); 
}, false); 
</script> 

nie jestem pewien, co problem jest. Miałem ten problem wcześniej, ale rozwiązał się on w przeszłości (czarna magia?). Każda pomoc byłaby bardzo ceniona.

Odpowiedz

14

Po zastosowaniu narzędzia Ripple do debugowania tego problemu (wysoce zalecane), znalazłem wskaźnik do niezdefiniowanej funkcji, która została zastosowana do detektora zdarzeń (więc nie jest to specyficzne dla wywołania deviceready).

Dla przyszłych programistów: sprawdź, czy wszystkie z twoich połączeń "addEventListener" wskazują na istniejące funkcje. Wydaje się oczywiste, ale tak się dzieje.

4

Sprawdź, czy w swoim kodzie określono właściwy kontekst funkcji zwrotnej.

Upewnij się, że nie używasz "this" w funkcji zwrotnej. Na przykład:

var app = { 
    init : function() { 
     document.addEventListener("deviceready", this.deviceready, false); 
    }, 

    deviceready : function() { 
     app.appWrapper = this.createAppWrapper();//watch out who is "this", you should use "app" but not "this" 
    }, 

    createAppWrapper : function() { 
     return new AppWrapper(); 
    } 
}; 

app.init(); 
+0

Miałem ten sam problem, a to zalecało go rozwiązać. Dzięki! – digaomatias

Powiązane problemy