Cordova Android Uncaught功能错误

时间:2013-05-21 22:12:24

标签: android cordova

我目前在我的项目中使用PhoneGap 2.7.0并且代码在iOS上运行没有错误。当我尝试在android上运行相同的代码时(除了Cordova javascript文件,我知道Android的不同之处)我收到了这个错误:

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:

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

我不确定问题是什么。我以前遇到过这个问题,但它过去已经解决了(黑魔法?)。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:14)

使用Ripple调试此问题(强烈推荐)之后,我发现一个指向未定义函数的指针应用于事件监听器(因此,不是特定于deviceready调用)。

对于未来的开发人员:检查以确保“addEventListener”调用的所有指向现有函数。看似很明显,但它确实发生了。

答案 1 :(得分: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();