2013-05-21 14 views
6

私は現在PhoneGap 2.7.0を自分のプロジェクトで使用していますが、コードはiOS上でエラーなく実行されます。アンドロイドで同じコードを実行しようとすると(Cordova javascriptファイルを除いて私は問題が何であるかわからないんだけどCordova Androidキャッチ関数エラー

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

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

私はindex.htmlの中で使用していたJavaScriptです:知っているが、私はこのエラーを取得しています)のAndroid用異なっています。私は以前にこの問題を抱えていましたが、それは過去に解決しました(黒い魔法?)。どんな助けも大歓迎です。

答えて

14

この問題をデバッグするためにRippleを使用した後(強くお勧めします)、イベントリスナーに適用される未定義関数へのポインタが見つかりました(deviceready呼び出しに固有ではありません)。

将来の開発者の場合:すべての "addEventListener"呼び出しのが既存の関数を指していることを確認してください。明らかだが、それは起こる。

4

コードでコールバック関数の正しいコンテキストを指定していないかどうかを確認してください。

コールバック関数で "this"を使用しないことを確認してください。たとえば、

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

私は同じ問題を抱えていました。この問題を解決しました。ありがとう! – digaomatias

関連する問題