6

我目前在我的项目中使用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>

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

4

2 回答 2

14

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

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

于 2013-05-21T23:17:58.120 回答
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();
于 2013-11-07T14:41:12.640 回答